tinyxml开源库的基本用法

news/2024/7/20 16:07:32 标签: 内存管理

最近项目中的某个功能需要写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对象时会自动释放。

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

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

转载于:https://www.cnblogs.com/superbi/p/4972048.html


http://www.niftyadmin.cn/n/1764623.html

相关文章

spring事务的传播性与隔离性

spring事务的传播性 REQUIRED&#xff08;必须的&#xff09;(TransactionDefinition.PROPAGATION_REQUIRED) 使用当前的事务&#xff0c;如果当前没有事务&#xff0c;则自己新建一个事务&#xff0c;子方法是必须运行在一个事务中的&#xff0c;如果当前存在事务&#xff0c…

可输入的select下拉框

当select下拉框中没有要选择的信息项时&#xff0c;可以直接在select中输入自己想要得信息项。 在输入信息项时&#xff0c;不改变select下拉框中原有的信息项。 通过Backspace键可以清除刚才输入的信息项&#xff0c;以便重新输入。如果不清除&#xff0c;再输入信息时&#x…

项目冲刺——总结

项目预期计划和现实进展 任务完成情况欢迎界面已完成侧滑列表已完成新增计划、新增书籍弹窗已完成可折叠计划列表已完成增加修改计划已完成选择感兴趣的话题已完成我的书籍列表已完成打开手机文件管理已完成显示对应目录以及下属的文件以及文件夹已完成读取PDF文件已完成书籍归…

非常精美的ext桌面系统,超级帅

预览地址&#xff1a;http://www.qwikioffice.com/desktop-demo/login.html图&#xff1a;

Java中的ReentrantLock和synchronized两种锁定

原文&#xff1a;http://www.ibm.com/developerworks/cn/java/j-jtp10264/index.html 多线程和并发性并不是什么新内容&#xff0c;但是 Java 语言设计中的创新之一就是&#xff0c;它是第一个直接把跨平台线程模型和正规的内存模型集成到语言中的主流语言。核心类库包含一个 T…

JS日期操作

时间对象是一个我们经常要用到的对象&#xff0c;无论是做时间输出、时间判断等操作时都与这个对象离不开。除开JavaScript中的时间对象外&#xff0c;在VbScript中也有许多的时间对象&#xff0c;而且非常好用。下面还是按照我们的流程来进行讲解。 它是一个内置对象——而不…

15位和18位身份证的正则表达式及其验证

1、简单的正则表达式&#xff1a; &#xff08;1&#xff09;preg_match("/^(\d{18,18}|\d{15,15}|\d{17,17}x)$/" ,$id_card) &#xff08;2&#xff09;preg_match("/^(\d{6})(18|19|20)?(\d{2})([01]\d)([0123]\d)(\d{3})(\d|X)?$/" ,$id_card) &…

js基础第四天

多个tab栏切换class封装 <style> *{margin:0;padding:0;} ul{list-style:none;} .box { width: 350px; height: 300px; border:1px solid #ccc; margin: 100px auto; overflow: hi…