- 概述
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,内容如下:
用vc6创建工程tinytest01,添加一个源文件main.cpp,代码如下:#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提供的差不多。