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

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

1.配置TinyXML2

这里把项目弄下来,然后解压,我们之需要里面的tinyxml2.h和tinyxml2.cpp,将他们拷到工程目录里面。

2.HelloWorld

在项目中创建test.xml,内容如下:

[html] view plaincopy

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

创建main.cpp

[cpp] view plaincopy

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

编译运行:

3.稍微复杂一些的例子

下面这个例子的场景更可能在工程中遇到,就是在XML中存储一些数据,然后由程序来调用。

[html] view plaincopy

  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>

[cpp] view plaincopy

  1. #include <iostream>
  2. #include"tinyxml2.h"
  3. using namespace std;
  4. using namespace tinyxml2;
  5. void example2()
  6. {
  7. XMLDocument doc;
  8. doc.LoadFile("test.xml");
  9. XMLElement *scene=doc.RootElement();
  10. XMLElement *surface=scene->FirstChildElement("node");
  11. while (surface)
  12. {
  13. XMLElement *surfaceChild=surface->FirstChildElement();
  14. const char* content;
  15. const XMLAttribute *attributeOfSurface = surface->FirstAttribute();
  16. cout<< attributeOfSurface->Name() << ":" << attributeOfSurface->Value() << endl;
  17. while(surfaceChild)
  18. {
  19. content=surfaceChild->GetText();
  20. surfaceChild=surfaceChild->NextSiblingElement();
  21. cout<<content<<endl;
  22. }
  23. surface=surface->NextSiblingElement();
  24. }
  25. }
  26. int main()
  27. {
  28. example1();
  29. return 0;
  30. }

运行结果

解释一下几个函数:

FirstChildElement(const char* value=0):获取第一个值为value的子节点,value默认值为空,则返回第一个子节点。

RootElement():获取根节点,相当于FirstChildElement的空参数版本;

const XMLAttribute* FirstAttribute() const:获取第一个属性值;

XMLHandle NextSiblingElement( const char* _value=0 ) :获得下一个节点。

时间: 2024-08-24 11:14:34

[库][c++]tinyxml2使用小结的相关文章

055 Python第三方库安装

目录 一.概述 二.看见更大的Python世界 2.1 Python社区 2.1.1 PyPI 2.1.2 实例:开发与区块链相关的程序 2.2 安装Python第三方库 三.第三方库的pip安装方法 3.1 pip安装方法 四.第三方库的集成安装方法 4.1 集成安装方法 五.第三方库的文件安装方法 5.1 文件安装方法 5.2 实例:安装wordcloud库 六.单元小结 一.概述 看见更大的Python世界 第三方库的pip安装方法 第三方库的集成安装方法 第三方库的文件安装方法 二.看见

android graphic(14)—EGL和OpenGL ES之间的关系

OpenGL ES EGL 例子 EGL加载OpenGL ES库 涉及的库 库的加载 小结 OpenGL ES 什么是OpenGL? Open Graphics Library (OpenGL) is a cross-language, cross-platform application programming interface (API) for rendering 2D and 3D vector graphics. The API is typically used to intera

日期和时间计算

最近在学习muduo网络库源码,小结一下日期和时间计算. 概念 GMT(UT).UTC.AD.CE.BC等略.参考:http://www.hermetic.ch/cal_stud/jdn.htm 儒略日(Julian day number, 这里简称为JD)起始时间为GMT -4712-01-01(i.e.4713 B.C.),中午12时.此刻2015年11月8日18:00:00的儒略日是2457335.25,0.1表示2.4小时.144分钟或者8640秒,以此类推.由于儒略日数字位数太多,国际

Linux内核分析——第七章 链接

第七章——链接 1.链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载到存储器并执行. 2.链接可以执行于编译时,加载时,运行时. 7.1编译器驱动程序 1.大多数编译系统提供编译驱动程序,它代表用户在需要时调用语言预处理器.编译器.汇编器和链接器. 7.2 静态链接 1.像Unix ld程序这样的静态链接器以一组可重定位目标文件和命令行参数作为输入,生成一个完全链接的可以加载运行的可执行目标文件作为输出. 2.输入的可重定位目标文件由各种不同的代码和数据节组成.

《深入理解计算机系统》读书笔记第七章——链接

<深入理解计算机系统>第七章 链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载(或拷贝)到存储器并执行. 链接的时机 编译时,也就是在源代码被翻译成机器代码时 加载时,也就是在程序被加载器加载到存储器并执行时. 运行时,由应用程序执行. 在现代系统中,链接是由链接器自动执行的. 7.1 编译器驱动程序 编译系统提供编译驱动程序——调用语言预处理器.编译器.汇编器和链接器. (1)运行C预处理器:源程序main.c->ASCII码中间文件main.i (2)

git的使用笔记-转自廖前辈的网站

------- GIT安装 ------- 1.linux安装git sudo apt-get install git   老一点: sudo apt-get install git-core 2.maxOS安装git brew install git 3.windows安装git msysgit是Windows版的Git,从http://msysgit.github.io/下载,然后按默认选项安装即可.安装完成后,在开始 菜单里找到"Git"->"Git Bash&q

《Linux内核设计与实现》第七章读书笔记

第七章 链接 链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载(或拷贝)到存储器并执行. 链接可以执行于编译时,也就是在源代码被翻译成机器代码时:也可以执行于加载时,也就是在程序被加载器加载到存储器并执行时:甚至执行于运行时,由应用程序来执行. 在早期的计算机系统中,链接是手动执行的.在现代系统中,链接是由叫链接器的自动执行的. 7.1 编译器驱动程序 大多数编译系统提供编译驱动程序,它代表用户在需要时调用语言预处理器.编译器.汇编器和链接器. 例子: 函数mai

如何学好编程语言?

很多人喜欢争论什么什么编程语言好,我认为这个话题如果不限定应用范围,就毫无意义.每种编程语言必然有其优点和缺点,这也决定了它有适合的应用场景和不适合的应用场景. 现代软件行业,想一门编程语言包打天下是不现实的.这中现状也造成了一种现象,一个程序员往往要掌握多种编程语言. 学习任何一门编程语言,都会面临的第一个问题都是:如何学习这门语言? 我不想说什么多看.多学.多写.多练之类的废话.世上事有难易乎?无他,唯手熟尔.谁不知道熟能生巧的道理? 我觉得有必要谈谈的是:如何由浅入深的学习一门编程语言?学

mysql全量备份与增量备份

一.全量备份 全量备份就是把数据库中所有的数据进行备份. 备份所有库: mysqldump -uroot -p456 -S /data/3306/mysql.sock -F -A -B |gzip >/server/backup/mysqlbak_$(date+%F).sql.gz 备份一个库: mysqldump -uroot -p456 -S /data/3306/mysql.sock -F -B oldboy|gzip >/server/backup/mysqlbak_$(date+%F