下载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的更多相关文章

  1. TinyXML 在vs2010 VC++使用

    1.下载TinyXML  http://www.grinninglizard.com/tinyxml/  解压缩,将以下六个文件复制到您的工程项目文件(跟您的cpp文件在一个目录下)中 tinyxml ...

  2. tinyxml学习2

    在TinyXML中,根据XML的各种元素来定义了一些类: TiXmlBase:整个TinyXML模型的基类. TiXmlAttribute:对应于XML中的元素的属性. TiXmlNode:对应于DO ...

  3. 转:VC解析XML文件-CMarkup的使用详解

    本篇文章是对VC解析XML文件-CMarkup的使用进行了详细的分析介绍,需要的朋友参考下 VC解析XML文件的工具有很多,CMarkup, tinyXML,还有IBM的,MS的等等. 据说tinyX ...

  4. VC++源文件编码

    目录 第1章源代码文件    1 1.1 研究思路    1 1.2 实验结果    3 1.3 #pragma setlocale    4 1.4 /source-charset    5 1.5 ...

  5. C++ TinyXml操作(含源码下载)

      前言 TinyXML是一个开源的解析XML的解析库,能够用于C++,能够在Windows或Linux中编译,使用TinyXML进行C++ XML解析,使用简单,容易上手.这个解析库的模型通过解析X ...

  6. XML解析器(TinyXML)的使用指南

    关于XML文件的解析方法的引导, 大家可以去试试这个工具(TinyXML) 1.首先下载TinyXML库的文件,这里给出链接,大家自己去下吧,记着要上国际http://prdownloads.sour ...

  7. 转载 VC轻松解析XML文件 - CMarkup类的使用方法

    VC轻松解析XML文件 - CMarkup类的使用方法http://www.cctry.com/thread-3866-1-1.html VC解析XML文件的工具有很多,CMarkup, tinyXM ...

  8. 【C/C++开发】TinyXml操作(含源码下载)

    前言 TinyXML是一个开源的解析XML的解析库,能够用于C++,能够在Windows或Linux中编译,使用TinyXML进行C++ XML解析,使用简单,容易上手. 这个解析库的模型通过解析XM ...

  9. Windows 常用运行库下载 (DirectX、VC++、.Net Framework等)

    经常听到有朋友抱怨他的电脑运行软件或者游戏时提示缺少什么 d3dx9_xx.dll 或 msvcp71.dll.msvcr71.dll又或者是 .Net Framework 初始化之类的错误而无法正常 ...

随机推荐

  1. Tarjan算法详解理解集合

    [功能] Tarjan算法的用途之一是,求一个有向图G=(V,E)里极大强连通分量.强连通分量是指有向图G里顶点间能互相到达的子图.而如果一个强连通分量已经没有被其它强通分量完全包含的话,那么这个强连 ...

  2. appium向右滑动

    /*** * 右滑1/2屏幕 / public static void slideRight(){ int x=driver.manage().window().getSize().width; in ...

  3. 看看这些JavaScript题目你会做吗?

    题目1 咋一看这题目,还以为答案选择B呢,其实正确答案为D,知道原因吗?接着往下看 map对数组的每个元素调用定义的回调函数并返回包含结果的数组,咋一看还以为它会像如下这样执行: function t ...

  4. html checkbox 全选与反选

    之所以记录这个博客,是因为我完全用jquery,无法实现自己想要的结果(通过一个checkbox的选中或不选中控制其他多个checkbox状态) <input type="checkb ...

  5. SSL协议运行机制

    SSL/TLS协议运行机制 一.作用 不使用SSL/TLS的HTTP通信,就是不加密的通信.所有信息明文传播,带来了三大风险. (1) 窃听风险(eavesdropping):第三方可以获知通信内容. ...

  6. php中mysql参数化查询

    $query = sprintf("SELECT * FROM Users where UserName='%s' and Password='%s'",mysql_real_es ...

  7. mysql 视图(view)

    什么是视图 视图是从一个或多个表中导出来的表,是一种虚拟存在的表. 视图就像一个窗口,通过这个窗口可以看到系统专门提供的数据. 这样,用户可以不用看到整个数据库中的数据,而之关心对自己有用的数据. 数 ...

  8. 微信公众平台项目中遇到的小问题40016,Invalid button size

    刚辞职的同事用JAVA给客户开发的微信公众平台,今天晚上客户给我打电话说出现错误,此时我正跟朋友在外吃饭,联系已辞职的同事也联系不上,便答应回去之后我给调试看下. 问明客户说就修改了appkey和ap ...

  9. JS实现上传本地图片前先预览

    <style type="text/css"> #preview /*这个就是预览的DIV的ID*/ { filter:progid:DXImageTransform. ...

  10. Struts2标签简介

    Struts2标签简介 Struts2标签的优势 标签库简化了用户对标签的使用 结合OGNL使用,对于集合.对象的访问功能非常强大 提供可扩展的主题.模板支持,极大简化了视图页面的编写 不依赖任何表现 ...