TinyXML是一个开源的解析XML的解析库,能够用于C++,能够在Windows或Linux中编译。这个解析库的模型通过解析XML文件,然后在内存中生成DOM模型,从而让我们很方便的遍历这棵XML树。
DOM模型即文档对象模型,是将整个文档分成多个元素(如书、章、节、段等),并利用树型结构表示这些元素之间的顺序关系以及嵌套包含关系。
下面介绍TinyXML的一些类。在TinyXML中,根据XML的各种元素来定义了一些类:
TiXmlBase:整个TinyXML模型的基类。
TiXmlAttribute:对应于XML中的元素的属性。
TiXmlNode:对应于DOM结构中的节点。
TiXmlComment:对应于XML中的注释
TiXmlDeclaration:对应于XML中的申明部分,<?versiong="1.0" ?>。
TiXmlDocument:对应于XML的整个文档。
TiXmlElement:对应于XML的元素。
TiXmlText:对应于XML的文字部分
TiXmlUnknown:对应于XML的未知部分。
TiXmlHandler:定义了针对XML的一些操作。
本次测试使用的xml文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<EllipsoidParam>
<Datum Name="BeiJing54" SemiMajorAxis="6378245.0" Flattening="298.3"/>
<Datum Name="XiAn80" SemiMajorAxis="6378140.0" Flattening="298.257"/>
<Datum Name="CGCS2000" SemiMajorAxis="6378137.0" Flattening="298.257222101"/>
<Datum Name="WGS-84" SemiMajorAxis="6378137.0" Flattening="298.257223563"/>
</EllipsoidParam>
测试程序:
// tinyxml_test.cpp : 定义控制台应用程序的入口点。
//
#include <string>
#include "tinyxml.h"
//
int main()
{
TiXmlDocument doc("test.xml");
bool loadOkay = doc.LoadFile();
if (!loadOkay)
{
return false;
}
TiXmlNode *node = 0;
TiXmlElement *datumElement = 0;
node = doc.FirstChild("EllipsoidParam");
for (node = node->FirstChild(); node != 0; node = node->NextSibling())
{
datumElement = node->ToElement();
//
printf("name:%15s semi:%15s flatten:%15s\r\n",
datumElement->Attribute("Name"),
datumElement->Attribute("SemiMajorAxis"),
datumElement->Attribute("Flattening"));
}
system("pause");
return 0;
}
附:tinyxml的下载地址:https://sourceforge.net/projects/tinyxml/