首页 > 技术文章 > tinyxml开源库的基本用法

superbi 2015-11-17 16:15 原文

最近项目中的某个功能需要写xml,由于项目中已经引入了tinyxml,所以不再寻找其他开源库。

 

前提:你得有个xml对象,声明tinyxml的对象:基于tinyxml的内存管理,TiXmlDocument  xmlDoc这样定义更简单;

读:

(1)载入xml:

  xmlDoc.LoadFile(filename, TIXML_ENCODING_UTF8);

 (2)读根节点:

  TiXmlElement* pRootEle = xmlDoc.RootElement();

 (3)获取节点:

  TiXmlElement* pCommEle = pRootEle->FirstChildElement(“test”);

 (4)获取节点的属性:

  pCommEle->Attribute(“mode”, &imode);

 (5)获取节点的值:

  pCommEle->FirstChild()->Value();

 

写: 

要写入xml,首先要弄清楚xml的各个元素在tinyxml的定义。

TiXmlNode:节点;

TiXmlComment:注释;

TiXmlDeclaration:声明;

TiXmlElement:元素;

TiXmlText:文字 

 

弄清楚概念后写入就简单了

 

(1)首先写入声明:

TiXmlDeclaration* pdecl = new TiXmlDeclaration("1.0", "utf-8", "");
xmlDoc.LinkEndChild(pdecl);

(2)写入节点:

TiXmlElement* pESTimeEle = new TiXmlElement(“test”);
pRootEle->LinkEndChild(pESTimeEle);

这里需要说明下:如果写入的是根节点,写入后显示:<test></test>

如果写入的是其他节点,写入后显示:<test />

如果要写入后显示<test></test>,则需要写入空的节点文本,具体操作见(5)

 

(3)写入注释:

TiXmlComment* pModeComm = new TiXmlComment(“中文”);
pRootEle->LinkEndChild(pModeComm);

这里需要说明的是:如果要写入非英文字符,需要注意字符编码,因为声明中使用utf-8的编码,必须保持一致性。

 

(4)写入节点文本:

TiXmlText *pIpContent = new TiXmlText(“00”);
pESTimeEle->LinkEndChild(pIpContent);

(5)写入节点属性:

pESTimeEle->SetAttribute(“mode”, 12);

(6)写完后保存:

xmlDoc.SaveFile(“test.xml”)

 PS: TiXmlDocument对象建议在栈上申请,其他对象在堆上申请,且不用手工释放,最后析构TiXmlDocument对象时会自动释放。

其他的暂未使用,就不写出来误人子弟了。

欢迎看官们拍砖,已备好头盔。

推荐阅读