【XML】TinyXML 详解(一):介绍

【XML】TinyXML 详解(一):介绍XML 开源解析器 TinyXML tinyxml

大家好,欢迎来到IT知识分享网。

【C++】郭老二博文之:C++目录

1、简介

DTD 语法:

<!DOCTYPE 存档 [ <!ELEMENT 注释 (#PCDATA)> ]> 

2、集成到项目中

TinyXML可以轻松集成到项目中,只需将两个头文件、四个源文件添加到项目中即可。

tinystr.h tinyxml.h tinystr.cpp tinyxml.cpp tinyxmlerror.cpp tinyxmlparser.cpp 

3、添加对STL的支持

在文件tinyxml.h的开头添加如下宏,即可支持STL

#define TIXML_USE_STL 

4、打印显示

TinyXML支持三种打印:

Print(FILE*) 输出到文件或者标准输出(有换行符,输出漂亮) operator<< 输出到 C++ 流与,标准 C++ iostream 集成(无换行符,不易阅读,适合网络传输) TiXmlPrinter 输出到 std::string 或内存缓冲区 

5、输入输出流

5)打印示例

#include <iostream> #include <sstream> #include "tinyxml.h" using namespace std; int main() { 
    TiXmlDocument doc( "demotest.xml" ); bool loadOkay = doc.LoadFile(); # a)打印到标准输出 doc.Print( stdout ); # b) 使用 TiXmlPrinter 打印 TiXmlPrinter printer; doc.Accept( &printer ); fprintf( stdout, "%s", printer.CStr() ); # c)使用c++操作符<< std::cout << doc; 

6、多个空格的处理

TinyXML 支持前两种方法。调用TiXmlBase::SetCondenseWhiteSpace( bool )设置所需的行为。默认是压缩空白区域。

7、错误检查

1)检查函数的返回值是否是: null

TiXmlElement* root = document.FirstChildElement( "Document" ); if ( root ) { 
    TiXmlElement* element = root->FirstChildElement( "Element" ); if ( element ) { 
    TiXmlElement* child = element->FirstChildElement( "Child" ); if ( child ) { 
    TiXmlElement* child2 = child->NextSiblingElement( "Child" ); if ( child2 ) { 
    // Finally do something useful. 

2)使用句柄 TiXmlHandle 简化检查

TiXmlHandle docHandle( &document ); TiXmlElement* child2 = docHandle.FirstChild( "Document" ).FirstChild( "Element" ).Child( "Child", 1 ).ToElement(); if ( child2 ) { 
    // do something useful 

8、TinyXML如何描述XML

1)XML文档示例

<?xml version="1.0" standalone=no> <!-- Our to do list data --> <ToDo> <Item priority="1"> Go to the <bold>Toy store!</bold></Item> <Item priority="2"> Do bills</Item> </ToDo> 

2)读取XML

TiXmlDocument doc( "demo.xml" ); doc.LoadFile(); 

4)注释

<!-- Our to do list data -->将被保存在 TiXmlUnknown 中

完整的对应关系如下:

TiXmlDocument "demo.xml" TiXmlDeclaration "version='1.0'" "standalone=no" TiXmlComment " Our to do list data" TiXmlElement "ToDo" TiXmlElement "Item" Attribtutes: priority = 1 TiXmlText "Go to the " TiXmlElement "bold" TiXmlText "Toy store!" TiXmlElement "Item" Attributes: priority=2 TiXmlText "Do bills" 

9、类简介

TiXmlAttribute 属性是名称-值对 TiXmlBase TinyXml 中每个类的基类 TiXmlComment XML 注释 TiXmlDeclaration 在正确的 XML 中,声明是文件中的第一个行 TiXmlDocument 始终是顶级节点 TiXmlElement 元素是一个容器类 TiXmlHandle TiXmlHandle是一个用空检查包装节点指针的类;这是一个非常有用的类 TiXmlNode 文档对象模型中所有内容的父类 TiXmlPrinter 打印到内存功能 TiXmlText XML文本 TiXmlUnknown tinyXml 无法识别的任何标记都会保存为未知标记 TiXmlVisitor 实现“访问者模式”的接口 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/112173.html

(0)
上一篇 2026-01-20 10:26
下一篇 2026-01-20 10:46

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信