VC++ TinyXML
下载TinyXML库文件http://sourceforge.net/projects/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 数据如下:
<?xml version="1.0" encoding="gb2312" standalone="yes" ?>
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<prop>
<id>100</id>
<title> test 1</title>
</prop>
<prop>
<id>200</id>
<title> test 2</title>
</prop>
</root>
注意要将 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();
.....................
如果还有后续属性,依次读取
.....................
维护读出的数据
.....................
//指向下一节点 CurrentPerson = 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());
=======================================================
VC++ TinyXML的更多相关文章
- TinyXML 在vs2010 VC++使用
1.下载TinyXML http://www.grinninglizard.com/tinyxml/ 解压缩,将以下六个文件复制到您的工程项目文件(跟您的cpp文件在一个目录下)中 tinyxml ...
- tinyxml学习2
在TinyXML中,根据XML的各种元素来定义了一些类: TiXmlBase:整个TinyXML模型的基类. TiXmlAttribute:对应于XML中的元素的属性. TiXmlNode:对应于DO ...
- 转:VC解析XML文件-CMarkup的使用详解
本篇文章是对VC解析XML文件-CMarkup的使用进行了详细的分析介绍,需要的朋友参考下 VC解析XML文件的工具有很多,CMarkup, tinyXML,还有IBM的,MS的等等. 据说tinyX ...
- VC++源文件编码
目录 第1章源代码文件 1 1.1 研究思路 1 1.2 实验结果 3 1.3 #pragma setlocale 4 1.4 /source-charset 5 1.5 ...
- C++ TinyXml操作(含源码下载)
前言 TinyXML是一个开源的解析XML的解析库,能够用于C++,能够在Windows或Linux中编译,使用TinyXML进行C++ XML解析,使用简单,容易上手.这个解析库的模型通过解析X ...
- XML解析器(TinyXML)的使用指南
关于XML文件的解析方法的引导, 大家可以去试试这个工具(TinyXML) 1.首先下载TinyXML库的文件,这里给出链接,大家自己去下吧,记着要上国际http://prdownloads.sour ...
- 转载 VC轻松解析XML文件 - CMarkup类的使用方法
VC轻松解析XML文件 - CMarkup类的使用方法http://www.cctry.com/thread-3866-1-1.html VC解析XML文件的工具有很多,CMarkup, tinyXM ...
- 【C/C++开发】TinyXml操作(含源码下载)
前言 TinyXML是一个开源的解析XML的解析库,能够用于C++,能够在Windows或Linux中编译,使用TinyXML进行C++ XML解析,使用简单,容易上手. 这个解析库的模型通过解析XM ...
- Windows 常用运行库下载 (DirectX、VC++、.Net Framework等)
经常听到有朋友抱怨他的电脑运行软件或者游戏时提示缺少什么 d3dx9_xx.dll 或 msvcp71.dll.msvcr71.dll又或者是 .Net Framework 初始化之类的错误而无法正常 ...
随机推荐
- [Asp.net mvc] Asp.net mvc Kendo UI Grid的使用(四)
有段时间没写博客了,工作状态比较忙,抽空继续总结下Grid的使用,这次主要介绍模板以及其他官网介绍不详尽的使用方法.先Show出数据,然后讲解下.后台代码: public ActionResult O ...
- 【Gym 100971J】Robots at Warehouse
题意 链接给你一个n*m的地图,'#'代表墙,‘.’代表可走的,1代表1号机器人,2代表2号机器人,机器人可以上下左右移动到非墙的位置,但不能走到另一个机器人身上.问能否交换1和2的位置. 分析 如果 ...
- CentOS下crontab执行java程序
阿里云CentOS收不到邮件 在crontab里配置执行脚本,脚本用来执行java程序,死活不执行.单独执行脚本可以运行. 查看crontab的日志文件,/var/log/cron,发现没有收到cro ...
- BZOJ3098 Hash Killer II
Description 这天天气不错,hzhwcmhf神犇给VFleaKing出了一道题: 给你一个长度为N的字符串S,求有多少个不同的长度为L的子串. 子串的定义是S[l].S[l + 1].... ...
- 洛谷P1130 红牌
题目描述 某地临时居民想获得长期居住权就必须申请拿到红牌.获得红牌的过程是相当复杂 ,一共包括N个步骤.每一步骤都由政府的某个工作人员负责检查你所提交的材料是否符合条件.为了加快进程,每一步政府都派了 ...
- Linux cscope命令
一.简介 Cscope 是一款开源免费的 C/C++浏览工具,自带一个基于文本的用户界面,通过cscope可以很方便地找到某个函数或变量的定义位置.被调用的位置等信息.Cscope对 C /C++支持 ...
- Laravel教程 二:路由,视图,控制器工作流程
Laravel教程 二:路由,视图,控制器工作流程 此文章为原创文章,未经同意,禁止转载. View Controller 上一篇教程我们走了那么长的路,终于把Laravel安装好了,这一篇教程我们就 ...
- OracleBulkCopy批量插入数据
1.OracleBulk程序集引用using ODAC = Oracle.DataAccess.Client 2.有时候不做字段映射,会使导入的数据出错 上代码 /// <summary> ...
- zabbix 邮件报错 Support for SMTP authentication was not compiled in
服务器系统是centos6.5 zabbix版本是3.0.4 根据 网上教程配置好邮件脚本后,触发发送邮件的时候报错: Support for SMTP authentication was not ...
- 15个超实用的php正则表达式
在这篇文章里,我已经编写了15个超有用的正则表达式,WEB开发人员都应该将它收藏到自己的工具包. 验证域名 检验一个字符串是否是个有效域名. $url = "http://komunitas ...