欢迎来到天天文库
浏览记录
ID:47402978
大小:67.50 KB
页数:13页
时间:2019-07-04
《TinyXml使用总结》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、读者对象:对TinyXml有一定了解的人。本文是对TinyXml工具的一些知识点的理解。需要讨论的请联系:QQ:4712024121TinyXml中对TiXmlNode进行了分类,是用一个枚举进行描述的。enumNodeType{DOCUMENT,文档节点ELEMENT,元素节点COMMENT,还没弄清楚UNKNOWN,未知节点TEXT,文本节点DECLARATION,声明节点TYPECOUNT还没弄清楚};TiXmlNode*pNode->Type()函数可以返回节点的类型。枚举的比较方法:TiX
2、mlText::TEXT==pNode->Type();这几个类型非常重要,尤其是在遍历xml时或者查找一个节点时我对节点和元素的理解如下:为了说明问题,我使用下面的xml文档来举例说明vertor20中国3、ountry>山西王大庄2.1节点:一种对文档结构的描述对象2.2元素:对文档某一个数据块的描述2.3文本是指没有孩子的节点例如大王庄文本节点是:"大王庄"然而判断一个节点是否是文本节点时并不是根据pNode->NoChildren()来判断,而是根据节点的类型来判断因为如果一个节点形如:
3、ountry>山西王大庄
4、它也是没有孩子节点的。2.4节点类可以转换成元素对象。例如TiXmlElement*pElement=pNode->ToElement();那什么时候需要转换成元素呢?当你需要元素的一些属性值是就需要转换了。2.5元素跟节点都有关于访问孩子的函数,元素访问孩子的函数:FirstChildElement()返回当前元素的孩子元素NextSiblingElement()返回当前元素的同级元素节点访问节点孩子的函数:FirstChild()返回当前节点的孩子节点NextSibing()返回当前节点的同级下
5、一个节点个人觉得元素访问和节点访问在一般的访问下没有区别,两者都可以访问的孩子对于一些特殊的情况下才需要区分。比如你要访问属性时,就需要用元素来找到第一个属性值。2.6对于遍历一个xml文档时,思路一般是这样的:1载入一个xml2获得根元素(不是根节点)3循环访问每一个根元素的子元素4对每一个子元素进行解析。4.1获取子元素的类型Type4.2switch(Type)caseTEXT:输出文本节点的值pNode->value()caseELEMENT:获取元素的value(这里的value指的是元素
6、的名字,例如:person元素)循环获取元素的每一个属性a得到元素的第一个属性bdo——while循环获取每一个属性和值。caseCOMMENT:暂时不用管caseUNKNOWN:暂时不用管caseDECLARATION:获取元素的版本,编码方式等等4.3循环遍历子元素的下一级元素(即孙子元素)在这里也可以遍历孙子节点。递归调用第四步。基本思路就是这样,具体代码见后面2.7如果定位一个节点唯一确定一个节点的方法是根据节点名,属性名,属性值1根据xml的遍历思想找到与给定节点名一样的节点2如果这个节点
7、有属性并且属性名和值与给定的一致,说明找到了。3如果没有一致的,说明解析失败。4如果没有给定属性名和值,则可以默认只查找与节点名一致的节点。2.8编码问题用TinyXml加载一个xml文档时,根据文档的编码方式来加载,在操作过程中需要进行编码转换如果encoding=utf-8则在遍历时,需要进行编码转换,具体转换还没找到方法。2.9指针的new和释放。TinyXml已经帮我们把指针分配的内存进行了管理,在析构函数中进行了处理,我们不需要处理new出来的指针如果我们显示的delete时,有可能影响程
8、序运行。3.0对于添加一个节点,删除一个节点,更新一个节点时,都需要在最后SaveFile,我就好几次忘了SaveFile,所以调了老半天。3.1总的来说,Tinyxml还是不错的,以后继续学习。部分功能代码3.2对于插入一个节点,首先获取要插入节点的父节点,然后进行插入,最需要注意的是在查询父节点的是时候,必须对应同一个文本对象来操作。有可能在两个函数中同时打开了同一个xml文档,虽然名字一样,但是不是同一个xmldocument对象,所以操作会失败。最后要保存。/
此文档下载收益归作者所有