c++中TinyXML有什么用

  介绍

这篇文章将为大家详细讲解有关c++中TinyXML有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

TinyXML介绍

最近做一个负载均衡的小项目,需要解析xml配置文件,用到了TinyXML,感觉使用起来很容易,给出一个使用TinyXML进行xml解析的简单例子,很多复杂的应用都可以基于本例子的方法来完成。

TinyXML是一个开源的解析xml的解析库,能够用于c++,能够在Windows或Linux中编译。这个解析库的模型通过解析xml文件,然后在内存中生成DOM模型,从而让我们很方便的遍历这棵xml DOM树。

模型即文档对象模型,是将整个文档分成多个元素(如书,章、节、段等),并利用树型结构表示这些元素之间的顺序关系以及嵌套包含关系。

TinyXML类说明

在TinyXML中,根据xml的各种元素来定义了一些类:

TiXmlBase:整个TinyXML模型的基类。
TiXmlAttribute:对应于xml中的元素的属性。
TiXmlNode:对应于DOM结构中的节点。
TiXmlComment:对应于xml中的注释。
TiXmlDeclaration:对应于xml中的申明部分,即& lt; ? versiong=?.0”;祝辞。
TiXmlDocument:对应于XML的整个文档。
TiXmlElement:对应于XML的元素。
TiXmlText:对应于XML的文字部分。
TiXmlUnknown:对应于XML的未知部分。
TiXmlHandler:定义了针对XML的一些操作。

下载和编译

下载地址:http://sourceforge.net/projects/tinyxml/

工作目录为:

tinyxml/,,,,,,,,,,,//工作目录   | - - -,include ,,,,,,,//头文件根目录   |,| - - -,tinyxml ,,,//tinyxml头文件,包括tinystr.h  tinyxml.h   | - - -,src ,,,,,,,,,,,//cpp源码文件根目录   | - - -,tinyxml ,,,,,,//tinyxml源码文件夹,包括tinystr.cpp  tinyxml.cpp  tinyxmlerror.cpp  tinyxmlparser.cpp   | - - -,main.cpp ,,//我们的主函数,调用tinyxml的示例代码,,   | - - -,conf ,,,,,,,,,,,//我们示例中用的xml文件所在的文件夹   |——,makefile ,,,,,,//makefile,不用我们多说了吧,不懂请看我博客的makefile最佳实践

简单的例子

在conf目录下建立的学生。xml代码

& lt; School  name=叭砑г骸氨?   ,,,,   ,,,& lt; Class  name =,“c++“祝辞,,   ,,,,,,,   ,,,,,,,& lt; Student  name=皌inyxml",数量=?23“祝辞,,   ,,,,,,,,,,,& lt; email> tinyxml@163.com,,   ,,,,,,,,,,,& lt; address>中国& lt;/address>,,,,,,,,,,,   ,,,,,,,& lt;/Student>,,   ,,,,,,,   ,,,,,,,& lt; Student  name=癹soncpp",数量=?56“祝辞,,   ,,,,,,,,,,,& lt; email> jsoncpp@gmail.com,,   ,,,,,,,,,,,& lt; address>美国& lt;/address>,,,,,,,,,,,   ,,,,,,,& lt;/Student>,,   ,,,,,,,   ,,,& lt;/Class>,,   ,,,,   & lt;/School>

想要使用tinyxml,只需要在头文件中包含& lt; tinyxml.h>即可

读取整个xml文件并打印代码:

void  printSchoolXml (), {   ,,,using  namespace 性传播疾病;   ,,,TiXmlDocument 医生;,,   ,,,const  char  *, xmlFile =,“conf/school.xml",,,,   ,,,if  (doc.LoadFile (xmlFile)), {,,,   ,,,,,,,doc.Print ();,,   ,,,},{else    ,,,,,,,cout  & lt; & lt;,“还要not  parse  xml  conf/school.xml", & lt; & lt;, endl;   ,,,},,,   }

读取XML

void  readSchoolXml (), {   ,,,using  namespace 性传播疾病;   ,,,const  char  *, xmlFile =,“conf/school.xml";   ,,,TiXmlDocument 医生;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,   ,,,if  (doc.LoadFile (xmlFile)), {   ,,,,,,,doc.Print ();   ,,,},{else    ,,,,,,,cout  & lt; & lt;,“还要not  parse  xml  conf/school.xml", & lt; & lt;, endl;   ,,,,,,,返回;   ,,,}   ,,,,   ,,,TiXmlElement *, rootElement =, doc.RootElement();,,//学校元素,,   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

c++中TinyXML有什么用