- 概述
tinyxml和xercesc一样,提供了完整的dom操作api。tinyxml相对比较简单好用,编译连接也不容易出问题。xercesc比较麻烦,非常完整庞大,编译有点麻烦,有内存泄漏。我认为在一般需求完全可以使用tinyxml。
tinyxml官方网站http://www.grinninglizard.com/tinyxml/index.html
可以在http://sourceforge.net/projects/tinyxml下载自己想要的版本。
我下载的版本是tinyxml_2_4_0.tar.gz
- 在windows上的开发示例
将tinyxml_2_4_0.tar.gz解压到目录tinyxml,在该目录中可以看到tinyxml.sln和tinyxml.dsw两个文件(我用的是vc6.0),用vc6打开tinyxml.dsw,可以看到4个工程:tinyxml、tinyxmlSTL、tinyxmlTest、tinyxmlTestXml四个工程,编译tinyxml和tinyxmlSTL,分别生成tinyxmld.lib和tinyxmld_STL.lib两个文件。这时就可以用tinyxml进行应用程序开发了。
创建测试用的xml文件test.xml,内容如下:
- <Persons>
- <Person ID="1">
- <name>周星星</name>
- <age>20</age>
- </Person>
- <Person ID="2">
- <name>白晶晶</name>
- <age>18</age>
- </Person>
- </Persons>
用vc6创建工程tinytest01,添加一个源文件main.cpp,代码如下:
- #include "tinyxml.h"
- #include "tinystr.h"
-
- #include <iostream>
-
- using namespace std;
-
- int main()
- {
- //创建一个XML的文档对象。
- TiXmlDocument *myDocument = new TiXmlDocument("d://test.xml");
- myDocument->LoadFile();
- //获得根元素,即Persons。
- TiXmlElement *RootElement = myDocument->RootElement();
- //输出根元素名称,即输出Persons。
- cout << RootElement->Value() << endl;
- //获得第一个Person节点。
- TiXmlElement *FirstPerson = RootElement->FirstChildElement();
- //输出接点名Person
- cout << FirstPerson->Value() << endl;
- //获得第一个Person的name节点和age节点和ID属性。
- TiXmlElement *NameElement = FirstPerson->FirstChildElement();
- TiXmlElement *AgeElement = NameElement->NextSiblingElement();
- TiXmlAttribute *IDAttribute = FirstPerson->FirstAttribute();
- //输出第一个Person的name内容,即周星星;age内容,即20;ID属性,即1。
- cout << NameElement->FirstChild()->Value() << endl;
- cout << AgeElement->FirstChild()->Value() << endl;
- cout << IDAttribute->Value() << endl;
-
- return 0;
- }
为了编译上面的代码,还需要设置头文件路径和lib路径。
在vc6中选择菜单"Tools"->"Options",进入"Options"对话框,选择“Directories”页,设置"Include files"路径,选择tinyxml.h和tinystr.h两个文件所在地路径。设置"Library files"路径,设置tinyxmld.lib和tinyxmld_STL.lib所在地路径。
然后选择工程设置,菜单"Project"->"Settings",进入"Project Settings"对话框,选择"Link"页,在"Object/Library modules"输入框中添加tinyxmld.lib。
最后编译运行程序,结果如下:
看到结果了吧,就那么简单,api和xercesc提供的差不多。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)