TinyXML2的使用

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

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

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

1.XML元素内容的获取

创建一个简单的xml文件

1 <?xml version="1.0"?>
2 <Hello>
3    World
4 </Hello> 

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

 1 #include <iostream>
 2 #include <fstream>
 3 #include "tinyxml2.h"
 4 using namespace tinyxml2;
 5 using namespace std;
 6
 7 void example1()
 8 {
 9     XMLDocument doc;
10     doc.LoadFile("test.xml");
11
12     const char* content= doc.FirstChildElement( "Hello" )->GetText();
13     cout << content <<endl;
14 }
15
16 int main()
17 {
18     example1();
19
20     return 0;
21 }

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

2.复杂一点的例子

 1 <?xml version="1.0"?>
 2 <scene name="Depth">
 3     <node type="camera">
 4         <eye>0 10 10</eye>
 5         <front>0 0 -1</front>
 6         <refUp>0 1 0</refUp>
 7         <fov>90</fov>
 8     </node>
 9     <node type="Sphere">
10         <center>0 10 -10</center>
11         <radius>10</radius>
12     </node>
13     <node type="Plane">
14         <direction>0 10 -10</direction>
15         <distance>10</distance>
16     </node>
17 </scene>  
 1 #include <iostream>
 2 #include <fstream>
 3 #include "tinyxml2.h"
 4 using namespace tinyxml2;
 5 using namespace std;
 6
 7 #include <iostream>
 8 #include"tinyxml2.h"
 9 using namespace std;
10 using namespace tinyxml2;
11 void example2()
12 {
13     XMLDocument doc;
14     doc.LoadFile("test.xml");
15     XMLElement *scene=doc.RootElement();
16     XMLElement *surface=scene->FirstChildElement("node");
17     while (surface)
18     {
19         XMLElement *surfaceChild=surface->FirstChildElement();
20         const char* content;
21         const XMLAttribute *attributeOfSurface = surface->FirstAttribute();
22         cout<< attributeOfSurface->Name() << ":" << attributeOfSurface->Value() << endl;
23         while(surfaceChild)
24         {
25             content=surfaceChild->GetText();
26             surfaceChild=surfaceChild->NextSiblingElement();
27             cout<<content<<endl;
28         }
29         surface=surface->NextSiblingElement();
30     }
31 }
32 int main()
33 {
34     example2();
35     return 0;
36 }  
时间: 2024-11-02 14:59:22

TinyXML2的使用的相关文章

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

项目主页:http://grinninglizard.com/tinyxml2docs/index.html tinyxml2.h /* Original code by Lee Thomason (www.grinninglizard.com) This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for an

学习C++版XML解析器tinyxml2

tinyxml2是一个非常好用的C++编写的XML文件解析和生成器,其项目地址为:https://github.com/leethomason/tinyxml2 下面给出常用的API: 主要API: XMLDocument:XML文档类 RootElement():XML文档的root元素 XMLElement:XML元素对象 FirstChildElement():第一个子节点 NextSiblingElement():下一个兄弟节点 XMLAttribute:XML节点属性类 FirstAt

关于tinyxml2解析xml跑错, PC运行正常, Android闪退

刚刚朋友让我帮忙看一下他的游戏为啥打包Android之后闪退, 在PC上正常, 跟了一下之后, 发现问题出在了tinyxml2上面, 他是这样写的 tinyxml2::XMLDocument* doc = new tinyxml2::XMLDocument(); XMLError errorID = doc->LoadFile("config.xml"); XMLElement* root = doc->RootElement(); 在PC上LoadFile能正常找到XML

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

 数据本地化 A CCUserDefault 系统会在默认路径cocos2d-x-2.2.3\projects\Hello\proj.win32\Debug.win32下生成一个名为UserDefault.xml.所有的key皆为char *型,value类型为bool intfloat double std::string. 读操作 bool getBoolForKey(const char* pKey); bool getBoolForKey(const char* pKey, bool

TinyXML开源XML解析器-TinyXML-2

TinyXML-2 is a simple, small, efficient, C++ XML parser that can be easily integrating into other programs. TinyXML-2 是一个简单.小型.高效的C++ XML解析器,它可以很容易地集成到其他程序. TinyXML-1 served my needs for many years; but it uses memory inefficiently, and doesn't perfo

《转》 在C++中使用TinyXML2解析xml

读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似,面向对象性很好. TinyXML是一个开源的解析XML的解析库,能够用于C++,能够在Windows或Linux中编译.这个解析库的模型通过解析XML文件,然后在内存中生成DOM模型,从而让我们很方便的遍历这棵XML树. DOM模型即文档对象模型,是将整个文档分成多个元素(如书.章.节.段等),并利用树型结构表示这些元素之间的顺序关系以及嵌套包

[库][c++]tinyxml2使用小结

参考:http://blog.csdn.net/educast/article/details/12908455 1.配置TinyXML2 去这里把项目弄下来,然后解压,我们之需要里面的tinyxml2.h和tinyxml2.cpp,将他们拷到工程目录里面. 2.HelloWorld 在项目中创建test.xml,内容如下: [html] view plaincopy <?xml version="1.0"?> <Hello>World</Hello>

c++xml解析之tinyxml2

读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似,面向对象性很好. TinyXML是一个开源的解析XML的解析库,能够用于C++,能够在Windows或Linux中编译.这个解析库的模型通过解析XML文件,然后在内存中生成DOM模型,从而让我们很方便的遍历这棵XML树. DOM模型即文档对象模型,是将整个文档分成多个元素(如书.章.节.段等),并利用树型结构表示这些元素之间的顺序关系以及嵌套包

tinyxml2库的使用--MFC工程

在编写应用程序的时候,经常需要动态加载某些数据,这种情况下微软的ini文件是蛮好的选择,但是平台的通用性比较差,使用xml的话就比较强一点,但是解析比较复杂,型号有牛人已经开发出了直接读写xml的库,c++格式的,也就是我们今天说的tinyxml2 tinyxml2主要有两个文件,如下 使用的时候把他门加入自己的应用程序,如下 然后在相应的头文件中导入该库,如下 #include "tinyxml2.h" using namespace tinyxml2; 然后我定义了一种xml目录结