tinyxml开发入门

  1. 概述
    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
  2. 在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。

    最后编译运行程序,结果如下:
    Persons Person 周星星 20 1
    看到结果了吧,就那么简单,api和xercesc提供的差不多。

 

你可能感兴趣的:(xml,api,include,library,tools,程序开发)