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

1.配置TinyXML2

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

2.HelloWorld

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

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

创建main.cpp

  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中存储一些数据,然后由程序来调用。

  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"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 ) :获得下一个节点。

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

  1. [原][库][c++]tinyxml使用小结

    参考:http://blog.csdn.net/L_Andy/article/details/40615517 tinyxml官网: http://www.grinninglizard.com/tin ...

  2. C语言库在不同系统下的后缀

    C语言的静态库与动态库对比分析,各有长短 库:  指由标准常用函数编译而成的文件,旨在提高常用函数的可重用性,减轻开发人员负担.常用的sdtio.h,math.h等                 库 ...

  3. 055 Python第三方库安装

    目录 一.概述 二.看见更大的Python世界 2.1 Python社区 2.1.1 PyPI 2.1.2 实例:开发与区块链相关的程序 2.2 安装Python第三方库 三.第三方库的pip安装方法 ...

  4. C++标准库的初探

    1,操作符 << 的原生意义是按位左移,例: 1 << 2; 其底层的意义是将整数 1 按位左移 2 位,即: 0000 0001  ==> 0000 0100: 2,重 ...

  5. linux专题一之文件管理(目录结构、创建、查看、删除、移动)

    在linux系统中一切都是文件./ 在linux中为根目录,是一切文件的根目录.本文将通过linux系统的目录结构和与linux文件操作有关的相关命令(touch.mkdir.cp.mv.mv.les ...

  6. C++自定义修饰键,实现如<Capslock+J>等组合键的按键映射

    前:所谓修饰键,就是Ctrl,Alt,Shift,Win这些按键. Update: 我使用AHK写了一个功能更丰富的脚本:https://github.com/h46incon/ModifierCus ...

  7. libevent源码深度剖析

    原文地址: http://blog.csdn.net/sparkliang/article/details/4957667 第一章 1,前言 Libevent是一个轻量级的开源高性能网络库,使用者众多 ...

  8. 《C程序设计语言》【PDF】下载链接:

    <C程序设计语言>[PDF]下载 https://u253469.pipipan.com/fs/253469-230382180 内容简介 在计算机发展的历史上,没有哪一种程序设计语言像C ...

  9. 详解C程序编译、链接与存储空间布局

    被隐藏了的过程 现如今在流行的集成开发环境下我们很少需要关注编译和链接的过程,而隐藏在程序运行期间的细节过程可不简单,即使使用命令行来编译一个源代码文件,简单的一句"gcc hello.c& ...

随机推荐

  1. 源代码下载 作者:王先荣(Xianrong Wang)

    作者:王先荣(Xianrong Wang) 下面是我的一些源代码: 1. 图像处理学习系列源代码——包括该系列文章的几乎所有代码: 1.5. 图像处理学习系列中用到的dll文件包——将这个解压缩之后放 ...

  2. c/c++的预处理定义 Stringizing Operator (#) Charizing Operator (#@) Token-Pasting Operator (##)

    c/c++的预处理定义:一.Stringizing Operator (#)在c和c++中数字标志符#被赋予了新的意义,即字符串化操作符.其作用是:将宏定义中的传入参数名转换成用一对双引号括起来参数名 ...

  3. Bus memory attribute

    根据程序的局部性原理,在主存与CPU之间设置的一个高速的容量较小的存储器,叫做cache. ARM cache架构由cache存储器和写缓冲器(write-buffer)组成.其中Write_buff ...

  4. SQL语句--查询任务

    SELECT 目标字段1, 目标字段2 FROM 目标表WHERE ID IN(SELECT 外键 FROM 外键所在表WHERE 提供数据字段 IN(提供数据第一条, 提供数据第二条, ))

  5. 2018 Java线程热门面试题,你知道多少?

    面试,难还是不难?取决于面试者的底蕴(气场+技能).心态和认知及沟通技巧.面试其实可以理解为一场聊天和谈判,在这过程中有心理.思想上的碰撞和博弈.其实你只需要搞清楚一个逻辑:“面试官为什么会这样问?他 ...

  6. Google's Machine Learning Crash Course #03# Reducing Loss

    Goal of training a model is to find a set of weights and biases that have low loss, on average, acro ...

  7. 浏览器内核、排版引擎、js引擎

    [定义] 浏览器最重要或者说核心的部分是“Rendering Engine”,可大概译为“渲染引擎”,不过我们一般习惯将之称为“浏览器内核”.负责对网页语法的解释(如标准通用标记语 言下的一个应用HT ...

  8. rabbitmq架构简介(包括集群)

    总的来说,rabbitmq使用erlang语言编写,其架构类似于servlet容器运行servlet应用,底层是erlang VM.然后是erlang节点,上面是应用.如下所示: 每个MQ中运行的应用 ...

  9. 20145127《java程序设计》第二周学习总结

    本周我又对java程序进行了更进一步的学习.相比与上一周的学习内容的宏观,这一周的所学更加的系统和调理明确. 本周是对java基础语法的学习.首先,我先是认识类型与变量. Java可区分为基本类型和类 ...

  10. 20145332 MAL_简单后门

    20145332 MAL_简单后门 用NC获取远程主机的shell 2.1.1 Windows获得Linux的权限 首先要在Windows主机下安装ncat.exe,安装完成后需要配置环境变量path ...