本文用一个详细的例子说明了TiXml的使用方法。如写、查找、插入、替换、加载、遍历等常见操作。
首先简单介绍一下TinyXml,要看详细的在网上搜搜了^_^:
1、TinyXml源代码只有4个cpp文件和2个头文件。
2、首先要理解TinyXml中的各个基本类型之间的关系,看看这个继承图大家就会很明白了!
可以看到TinyXml中的注释comment
,声明declaration,元素element,文本等都是节点Node的子类,也就是说可以把XMl文件中的各个元素当做节点来处理。Node类型也有到各个子类之间的转换方法,如ToElement()转换成元素,ToDocument转换成文档等。
因此可以吧TiXmlNode作为TinyXml的基本数据类型来操作,这样转化到其他类型也比较方便!
3、Document就是整个Xml文档,Comment就是里面的注释,原始类似于HTML中的tag。
如就是一个空元素。
如 你好,其中attr1 arrt2就是ele元素的属性,"hello"
和"world"分别是相应属性的值,最后字符串“你好”就是此节点的一个文本text。
4、要理解TinyXml中的每个节点都可能是另一个节点的父节点这个很重要,因此遍历TinyXml文档要用递归的方法。每个节点都可能有
属性,文本什么的!
5、每个type of TiXmlNode节点的值'value'对应如下 :
Document: filename of the xml file
Element: name of the element
Comment: the comment text
Unknown: the tag contents
Text: the text string
6、TinyXml中Node的类型types是一个枚举类型,其成员如下:
DOCUMENT, ELEMENT, COMMENT, UNKNOWN, TEXT, and DECLARATION
7、TinyXml的在线文档和主页:
http://www.grinninglizard.com/tinyxmldocs/index.html
8、常用操作详解:
glibc[~]# cat example.cc
#include "tinyxml.h"
#include
usingnamespacestd;
TiXmlDocument *pDoc =NULL;
voidwrite_xml( )
{
TiXmlDocument doc;
TiXmlDeclaration * decl =newTiXmlDeclaration("1.0","","");
doc.LinkEndChild( decl );
TiXmlElement * element1 =newTiXmlElement("AMULE_ToDL");//创建元素element1
element1->SetAttribute("num",5);
doc.LinkEndChild( element1 );
// TiXmlText * text = new TiXmlText( "World" );//创建一个文本
// element->LinkEndChild( text );//链接
TiXmlElement * element11 =newTiXmlElement("name");
element11->SetAttribute("name","GongFong.rmvb");
element1->LinkEndChild( element11 );//链接element11为element1的子节点(子元素)
TiXmlE