创一个网站怎样赚钱,做系统和做网站哪个简单一些,wordpress文章怎么写,免费库存管理软件推荐1、简介
优点#xff1a; TinyXML 是一个简单、小型的 C XML 解析器#xff0c;可以轻松集成到项目中。 TinyXML 解析 XML 文档#xff0c;并根据该文档构建可读取、修改和保存的文档对象模型 (DOM) TinyXML 是在 ZLib 许可下发布的#xff0c;因此可以在开源或商业代码中…1、简介
优点 TinyXML 是一个简单、小型的 C XML 解析器可以轻松集成到项目中。 TinyXML 解析 XML 文档并根据该文档构建可读取、修改和保存的文档对象模型 (DOM) TinyXML 是在 ZLib 许可下发布的因此可以在开源或商业代码中使用它。 TinyXML 支持 UTF-8允许以任何语言操作 XML 文件。
缺点 TinyXML 目前不使用或直接支持 wchar、TCHAR 或 Microsoft 的 _UNICODE。 TinyXML 不解析或使用 DTD文档类型定义或 XSL可扩展样式表语言。
DTD 语法
!DOCTYPE 存档 [!ELEMENT 注释 (#PCDATA)
]下载地址 https://sourceforge.net/projects/tinyxml/files/latest/download
2、集成到项目中
TinyXML可以轻松集成到项目中只需将两个头文件、四个源文件添加到项目中即可。
tinystr.h
tinyxml.h
tinystr.cpp
tinyxml.cpp
tinyxmlerror.cpp
tinyxmlparser.cpp3、添加对STL的支持
TinyXML 可以编译为使用或不使用STL。 使用STL时TinyXML使用std::string类并完全支持std::istream、std::ostream、operator和operator。 许多 API 方法都有“const char*”和“const std::string”两种形式。
在文件tinyxml.h的开头添加如下宏即可支持STL
#define TIXML_USE_STL4、打印显示
TinyXML支持三种打印
Print(FILE*) 输出到文件或者标准输出有换行符输出漂亮
operator 输出到 C 流与标准 C iostream 集成无换行符不易阅读适合网络传输
TiXmlPrinter 输出到 std::string 或内存缓冲区5、输入输出流
添加宏 TIXML_USE_STL 后 TinyXML 支持 C 流streams (operator ,) 也支持 C (FILE*) 流。
1C 风格输出 基于 FILE*使用接口 Print() 和 SaveFile() 生成带有大量空白的格式化输出旨在尽可能便于人类阅读。 能够容忍格式错误的 XML 文档。例如包含 2 个根元素和 2 个声明的 XML 文档仍将打印。
2C 风格输入 基于 FILE*使用接口 Parse() 和 LoadFile() 快速、宽容的阅读容忍格式错误的XML 文档
3C 风格的输出 基于 std::ostream使用操作符 operator 生成压缩输出便于网络传输而不是为了可读性。 不能容忍格式错误的 XML文档应该包含正确的一个根元素额外的根级元素将不会输出。
4C 风格输入 基于 std::istream使用操作符 operator 从流中读取 XML使其可用于网络传输。 TinyXML 在读取根元素后将假定 XML 数据是完整的。换句话说具有多个根元素的结构不良的文档将无法正确读取。 另请注意由于 STL 的实现和 TinyXML 的限制operator 比 Parse() 稍慢。
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、多个空格的处理
对于是否应该保留空白或压缩空白并没有达成一致的标准。 例如假设“_”是一个空格然后查看“Hello____world”。 HTML以及至少一些 XML 解析器会将其解释为“Hello_world”。它们压缩了空白。有些 XML 解析器不这样做并将其保留为“Hello____world”。
TinyXML 支持前两种方法。调用TiXmlBase::SetCondenseWhiteSpace( bool )设置所需的行为。默认是压缩空白区域。
如果更改默认值则应在调用 Parse 解析 XML 数据之前 调用 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 useful8、TinyXML如何描述XML
1XML文档示例
?xml version1.0 standaloneno
!-- Our to do list data --
ToDoItem priority1 Go to the boldToy store!/bold/ItemItem priority2 Do bills/Item
/ToDo2读取XML
TiXmlDocument doc( demo.xml );doc.LoadFile();3第一行声明 ?xml version1.0 standaloneno将被保存在 TiXmlComment 中
4注释
!-- Our to do list data --将被保存在 TiXmlUnknown 中
5元素 ToDo 保存 TiXmlElement 对象中。该元素没有任何属性但包含其他 2 个元素
6文本 Go to the 对应 TiXmlText.
完整的对应关系如下
TiXmlDocument demo.xmlTiXmlDeclaration version1.0 standalonenoTiXmlComment Our to do list dataTiXmlElement ToDoTiXmlElement Item Attribtutes: priority 1TiXmlText Go to the TiXmlElement boldTiXmlText Toy store!TiXmlElement Item Attributes: priority2TiXmlText Do bills9、类简介
1继承关系 2说明
TiXmlAttribute 属性是名称-值对
TiXmlBase TinyXml 中每个类的基类
TiXmlComment XML 注释
TiXmlDeclaration 在正确的 XML 中声明是文件中的第一个行
TiXmlDocument 始终是顶级节点
TiXmlElement 元素是一个容器类
TiXmlHandle TiXmlHandle是一个用空检查包装节点指针的类这是一个非常有用的类
TiXmlNode 文档对象模型中所有内容的父类
TiXmlPrinter 打印到内存功能
TiXmlText XML文本
TiXmlUnknown tinyXml 无法识别的任何标记都会保存为未知标记
TiXmlVisitor 实现“访问者模式”的接口