前一阵子做一个客服回复玩家问题工具,要用到读写XML文件的数据,同事推荐用TinyXML,于是,开始了我与TinyXML的亲密之旅。
在康保等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站设计、成都网站制作 网站设计制作按需策划设计,公司网站建设,企业网站建设,成都品牌网站建设,成都全网营销推广,外贸营销网站建设,康保网站建设费用合理。
先简单说说配置:首先下载TinyXML库的文件,然后在 TinyXML 的目录里面找到tinystr.h, tinyxml.h,tinystr.cpp,tinyxml.cpp, tinyxmlerror.cpp,tinyxmlparser.cpp六个文件加入到自己的项目中去,在相应的工程文件中加入两个头文件 #include "tinyxml.h" ,#include "tinystr.h",在 tinystr.cpp,tinyxml.cpp, tinyxmlerror.cpp, tinyxmlparser.cpp四个文件的第一行加入头文件 #include "stdafx.h",然后即可使用TinyXML编程。
要读取的xml 数据如下:
100 test 1 200 test 2
注意要将 encoding设为gb2312格式,我一开始设置的是utf-8,结果遇到在程序里
写入中文没问题, 但在读出该中文时却有异常,把后面的 符号也当作值读出来
了,后来和一同事讨论后才知道是编码问题。
- string filefullPath = 要读取xml文件的绝对路径
- //创建文件对象
- TiXmlDocument * myDocument = new TiXmlDocument(filefullPath.c_str());
- //加载文件数据
- myDocument->LoadFile();
- //获取根节点
- TiXmlElement *RootElement = myDocument->RootElement();
以下是简单的读取操作:
- //第一个子节点
- TiXmlElement *CurrentPerson = RootElement->FirstChildElement();
- //遍历获取指定节点数据
- while(CurrentPerson)
- {
- //子节点第一个属性 id
- TiXmlElement *IdElement = CurrentPerson->FirstChildElement();
- //第一个属性的值
- int nodeID = atoi(IdElement->FirstChild()->Value());
- //子节点第二个属性 title
- TiXmlElement *TitleElement = IdElement->NextSiblingElement();
- //第二个属性的值
- CString nodeTitle = TitleElement->FirstChild()->Value();
- .....................
- 如果还有后续节点,依次读取
- .....................
- 维护读出的数据
- .....................
- //指向下一节点
- CurrentPersonCurrentPerson = CurrentPerson->NextSiblingElement();
- }
以下是增加xml记录的操作,例如要增加 id 为 300,title 为 test3 的记录:
- //创建节点对象
- TiXmlElement *PersonElement = new TiXmlElement("prop");
- //链接到根节点
- RootElement ->LinkEndChild(PersonElement);
- //创建节点对象的属性节点
- TiXmlElement *IdElement = new TiXmlElement("id");
- TiXmlElement *TitleElement =new TiXmlElement("title");
- //将属性节点链接到子节点
- PersonElement->LinkEndChild(IdElement);
- PersonElement->LinkEndChild(TitleElement);
- //创建属性对应数值对象
- TiXmlText *idContent = new TiXmlText("300");
- TiXmlText *titleContent = new TiXmlText("test3");
- //将数值对象关联到属性节点
- IdElement->LinkEndChild(idContent);
- TitleElement->LinkEndChild(titleContent);
- //保存到文件
- myDocument->SaveFile(m_filefullPath.c_str());
以下是删除记录操作,例如要删除id为300 的记录:
- //获取当前要删除的节点
- TiXmlElement * childElement = 根据id从自己读取时缓存的数据中获得
- //从根节点移除子节点
- RootElement->RemoveChild(childElement);
- //保存文件
- myDocument->SaveFile(m_filefullPath.c_str());
学习TinyXML主要是要理解其节点的层次关系,通晓其筋脉,则运用自如。
原文链接:http://www.cnblogs.com/skydesign/archive/2011/11/08/2240528.html
【编辑推荐】
当前题目:体验TinyXML读写XML文件数据
本文来源:http://www.shufengxianlan.com/qtweb/news27/14977.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联