-----------------------------------------------------------------2015年7月21日16:37:53------------------------------------------------

今天在使用tinyxml2时,遇到一个问题,就是#include "tinyxml2.h"这一句一定要写在文件最开始的地方,不然会有错误,我也不知道是为什么。

----------------------------------------------------------------------------------分割线--------------------------------------------------

最近项目上需要用到XML,然后简单的学习了一下XML,在此简单描述XML中的元素解析过程,学习例子来自于

http://blog.csdn.net/educast/article/details/12908455

去这里获取XML解析器的文件,我们只需要tinyxml2.h和tinyxml2.cpp,将他们拷到工程目录里面。

---------------------------------------------------------------------------分割线2015年10月8日14:42:49--------------------------------------------------------------

打开文件:

tinyxml2::XMLDocument *doc = new tinyxml2::XMLDocument();
tinyxml2::XMLError eRet = doc->LoadFile(m_Path.c_str());
if (tinyxml2::XML_NO_ERROR != eRet)
{
cout <<"XML File Error\n";
}

1.XML元素内容的获取

创建一个简单的xml文件

 <?xml version="1.0"?>
<Hello>
World
</Hello>

然后编写程序获取xml元素内容。

 #include <iostream>
#include <fstream>
#include "tinyxml2.h"
using namespace tinyxml2;
using namespace std; void example1()
{
XMLDocument doc;
doc.LoadFile("test.xml"); const char* content= doc.FirstChildElement( "Hello" )->GetText();
cout << content <<endl;
} int main()
{
example1(); return ;
}

注意:XML文件中不同的书写格式会输出不同的元素内容格式,比如如下所示:

2.复杂一点的例子

 <?xml version="1.0"?>
<scene name="Depth">
<node type="camera">
<eye>0 10 10</eye>
<front>0 0 -1</front>
<refUp>0 1 0</refUp>
<fov>90</fov>
</node>
<node type="Sphere">
<center>0 10 -10</center>
<radius>10</radius>
</node>
<node type="Plane">
<direction>0 10 -10</direction>
<distance>10</distance>
</node>
</scene>
 #include <iostream>
#include <fstream>
#include "tinyxml2.h"
using namespace tinyxml2;
using namespace std; #include <iostream>
#include"tinyxml2.h"
using namespace std;
using namespace tinyxml2;
void example2()
{
XMLDocument doc;
doc.LoadFile("test.xml");
XMLElement *scene=doc.RootElement();
XMLElement *surface=scene->FirstChildElement("node");
while (surface)
{
XMLElement *surfaceChild=surface->FirstChildElement();
const char* content;
const XMLAttribute *attributeOfSurface = surface->FirstAttribute();
cout<< attributeOfSurface->Name() << ":" << attributeOfSurface->Value() << endl;
while(surfaceChild)
{
content=surfaceChild->GetText();
surfaceChild=surfaceChild->NextSiblingElement();
cout<<content<<endl;
}
surface=surface->NextSiblingElement();
}
}
int main()
{
example2();
return ;
}

--------------------------------------------------分割线 2015年6月4日10:54:02--------------------------------------------------------------------------

现有如下xml的内容,需要将其中的maxvalue存放在一个map maxValue中,minvalue存放在一个map minValue中,实现该功能的c++代码如下:

xml:

<maxvalue>
<item name="age1" value = "100"></item>
<item name="age3" value = "80"></item>
<item name="age5" value = "70"></item>
</maxvalue> <minvalue>
<item name="age1" value = "20"></item>
<item name="age2" value = "20"></item>
<item name="age3" value = "20"></item>
<item name="age5" value = "20"></item>
</minvalue>

c++:

     tinyxml2::XMLElement* t_myEle = root->FirstChildElement("maxvalue");//直接读取root节点的子节点中叫maxvalue的节点
t_myEle=t_myEle->FirstChildElement(); string t_first;
double t_second;
const char* name;
while (t_myEle)
{ name = t_myEle->Attribute("name");
t_first.assign(name,strlen(name));
t_second=t_myEle->DoubleAttribute("value");
maxValue.insert(pair<string,double>(t_first,t_second));
t_myEle=t_myEle->NextSiblingElement();
} t_myEle = root->FirstChildElement("minvalue");
t_myEle=t_myEle->FirstChildElement(); while (t_myEle)
{ name = t_myEle->Attribute("name");
t_first.assign(name,strlen(name));
t_second=t_myEle->DoubleAttribute("value");
minValue.insert(pair<string,double>(t_first,t_second));
t_myEle=t_myEle->NextSiblingElement();
}

TinyXML2的使用的更多相关文章

  1. TinyXML2读取和创建XML文件 分类: C/C++ 2015-03-14 13:29 94人阅读 评论(0) 收藏

    TinyXML2是simple.small.efficient C++ XML文件解析库!方便易于使用,是对TinyXML的升级改写!源码见本人上传到CSDN的TinyXML2.rar资源:http: ...

  2. tinyxml2简单使用

    引入头文件 <span style="font-size:18px;">#include "HelloWorldScene.h" #include ...

  3. cocos2d-x使用tinyxml2存储解析xml

    我用的是2.1.4的cocos2d-x,里面自带有tinyxml2库. 导入头文件:#include "support/tinyxml2/tinyxml2.h" using nam ...

  4. TinyXml和tinyxml2

    C++操作xml没有标准库的支持,TinyXml是个不错的xml操作库,以前总是使用TinyXml读写xml,但是最近对大量xml进行读写时,速度真的是有点慢,特别是在调试时,每次启动读xml就要好长 ...

  5. 7.数据本地化CCString,CCArray,CCDictionary,tinyxml2,写入UserDefault.xml文件,操作xml,解析xml

     数据本地化 A CCUserDefault 系统会在默认路径cocos2d-x-2.2.3\projects\Hello\proj.win32\Debug.win32下生成一个名为UserDef ...

  6. 用TinyXml2读取XML文件的一个简单Demo

    废话少说直接上代码,需要的人自然一看便懂,对于第一次接触TinyXml2的人来说还是有帮助的. <?xml version="1.0"?> <Table name ...

  7. tinyxml2库的使用--MFC工程

    在编写应用程序的时候,经常需要动态加载某些数据,这种情况下微软的ini文件是蛮好的选择,但是平台的通用性比较差,使用xml的话就比较强一点,但是解析比较复杂,型号有牛人已经开发出了直接读写xml的库, ...

  8. 推荐一个优秀的c++源代码,TinyXml2

    项目主页:http://grinninglizard.com/tinyxml2docs/index.html tinyxml2.h /* Original code by Lee Thomason ( ...

  9. Windows10 VS2017 C++ xml解析(tinyxml2库)

    首先下载tinyxml2 7.0.1库: https://github.com/leethomason/tinyxml2/releases 打开tinyxml2,然后升级sdk,解决方案->重定 ...

随机推荐

  1. merge 语法解析

    merge into 支持sqlserver 2008 和以上的版本 无论是INSERT还是UPDATE,从执行之间上看,MERGE INTO(MERGE)都要比直接INSERT/UPDATE的效率高 ...

  2. multimap 和priority_queue详解

    上一期是关于STL和并查集结合的例题,也附了STL中部分容器的使用摘要,由于是从网上东拼西凑的,感觉有的关键点还是没解释清楚,现在从其中摘出两个容器,用例题对它们的用法进行进一步解释. 以下是例题的介 ...

  3. Bootstrap框架的了解和使用之栅格系统

       前    言 Bootstrap Bootstrap 包含了一个响应式的.移动设备优先的.不固定的网格系统,可以随着设备或视口大小的增加而适当地扩展到 12 列.它包含了用于简单的布局选项的预定 ...

  4. 深入理解计算机系统chapter7

    链接:将各种代码和数据部分收集起来并组合成为单一文件的过程,这个文件可被加载到存储器并执行. 在运行时,和一个在存储器中的程序链接起来 二.静态链接库与动态链接库 静态连接库就是把(lib)文件中用到 ...

  5. 调用惯例Calling Convention (或者说:调用约定)

    调用惯例影响执行效率,参数的传递方式以及栈清除的方式.   调用惯例 参数传递顺序 谁负责清除参数 参数是否使用暂存器 register 从左到右 被调用者 是 pascal 从左到右 被调用者 否 ...

  6. Linux入门之常用命令(6)Bash命令重定向 管线命令

    命令重定向 将目前所得数据转移到其他地方 >  将输出结果导入文件 如  ls -l / >test     (1)若test文件不存在则创建 (2)若test文件存在 清空后写入 > ...

  7. 基于Apache axis2开发Java Web服务

    1.安装配置axis2环境 1)下载axis2-1.4.1-war(发布webservice)和axis2-1.4.1-bin.zip(webservice调用使用的各种包) 下载好后把axis2-1 ...

  8. C++PrimerPlus第6版 第四章——复合类型

    1,复合类型主要包含:数组.结构.联合.枚举.类.指针.引用等. 2,数组.长度必须确定.即编译阶段,数组的长度就得确定好.所以只能使用常量(#define.const)声明数组长度.如果使用变量声明 ...

  9. HTML5基础知识及相关笔记

    HTML5基础 1.1HTML文件的基本结构和W3C标准 1.1.1HTML简介 HTML是一种描述网页的语言,一种超文本标记的语言! 1.1.2HTML文件的基本结构 头部(head) 头部是网页的 ...

  10. RobotFramework自动化测试框架-移动手机自动化测试Click Element关键字的使用

    Click Element关键字用来模拟点击APP界面上的一个元素,该关键字接收一个参数[ locator ] ,这里的locator指的是界面元素的定位方式. 示例1:使用Click Element ...