pugixml介绍

pugixml是一个高性能、轻量级并且简单易用的xml解析库,支持UTF8 encoding、Little-endian UTF16、Big-endian UTF16、UTF16 with native endianness、Little-endianUTF32、Big-endian UTF32和UTF32with native endianness字符集,支持跨平台。

下载地址:http://pugixml.org/

使用示例

Pugixml共三个文件,包含到工程中即可。

下面我们要读写如下结构的students.xml文档。

<Root>

<students>

<student>

<name>张三</name>

<sex>男</sex>

</student>

<student>

<name>李四</name>

<sex>男</sex>

</student>

<student>

<name>王五</name>

<sex>女</sex>

</student>

</students>

</Root>

将上面xml信息读取的代码

void Read()

{

    pugi::xml_document doc;

    if (doc.load_file("students.xml",pugi::parse_default,pugi::encoding_utf8))

    {

        pugi::xml_node root_node = doc.child(_T("Root"));

        pugi::xml_node students_node = root_node.child(_T("students "));

        // 分别读取每个学生信息

        for (pugi::xml_node student_node = students_node.child(_T("student"));

            student _node;

            student _node = student _node.next_sibling(_T("student ")))

        {

            pugi::xml_node name_node = students_node.child(_T("name"));

            printf("name : %s\n",name_node.first_child().value());

            pugi::xml_node sex_node = student_node.child(_T("sex"));

            printf("sex: %s\n",sex_node.first_child().value());

        }

    }

}

将m_studentList中的学生信息保存到student.xml中的代码

void Write()

{

    pugi::xml_document doc;

    pugi::xml_node root_node = doc.append_child(_T("Root"));

    pugi::xml_node students_node = root_node.append_child(_T("students"));

    // 分别存入每个学生的信息
for ( int i = 0; i < m_studentList.size();i++)
{ Student student = m_ studentList.at(i); pugi::xml_node student_node = students_node.append_child(_T("student")); pugi::xml_node name_node = student _node.append_child(_T("name")); name_node.append_child(pugi::node_pcdata).set_value((student.GetstrName().c_str())); pugi::xml_node sex_node = student _node.append_child(_T("sex")); sex _node.append_child(pugi::node_pcdata).set_value((student.GetstrSex().c_str())); } doc.save_file("students.xml"); }

pugixml使用教程的更多相关文章

  1. [转]pugixml使用教程

    转自:https://www.cnblogs.com/ltm5180/p/3989125.html pugixml介绍 pugixml是一个高性能.轻量级并且简单易用的xml解析库,支持UTF8 en ...

  2. Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求

    上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...

  3. Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数

    上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ...

  4. Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数

    上一篇:Angular2入门系列教程-服务 上一篇文章我们将Angular2的数据服务分离出来,学习了Angular2的依赖注入,这篇文章我们将要学习Angualr2的路由 为了编写样式方便,我们这篇 ...

  5. Angular2入门系列教程4-服务

    上一篇文章 Angular2入门系列教程-多个组件,主从关系 在编程中,我们通常会将数据提供单独分离出来,以免在编写程序的过程中反复复制粘贴数据请求的代码 Angular2中提供了依赖注入的概念,使得 ...

  6. Angular2入门系列教程1-使用Angular-cli搭建Angular2开发环境

    一直在学Angular2,百忙之中抽点时间来写个简单的教程. 2016年是前端飞速发展的一年,前端越来越形成了(web component)组件化的编程模式:以前Jquery通吃一切的田园时代一去不复 ...

  7. wepack+sass+vue 入门教程(三)

    十一.安装sass文件转换为css需要的相关依赖包 npm install --save-dev sass-loader style-loader css-loader loader的作用是辅助web ...

  8. wepack+sass+vue 入门教程(二)

    六.新建webpack配置文件 webpack.config.js 文件整体框架内容如下,后续会详细说明每个配置项的配置 webpack.config.js直接放在项目demo目录下 module.e ...

  9. wepack+sass+vue 入门教程(一)

    一.安装node.js node.js是基础,必须先安装.而且最新版的node.js,已经集成了npm. 下载地址 node安装,一路按默认即可. 二.全局安装webpack npm install ...

随机推荐

  1. 14.5.2.4 Locking Reads 锁定读:

    14.5.2.4 Locking Reads 锁定读: 如果你查询数据然后插入或者修改相关数据在相同的事务里, 常规的SELECT 语句不能给予足够的保护. 其他事务可以修改或者删除你刚查询相同的记录 ...

  2. Instant Complexity(模拟,递归)

    Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 1535   Accepted: 529 Description Analyz ...

  3. Pick-up sticks(判断两条线段是否相交)

    Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 8351 Accepted: 3068 Description Stan has ...

  4. Qt入门(8)——事件和事件过滤器

    在Qt里,一个事件是继承自QEvent的对象.事件通过调用QObject::event(),被发送到继承自 QObject 的对象.事件发送就是一个事件已经产生,由 QEvent正好去表达,且QObj ...

  5. 算法优化(动态规划):COGS 2009. [USACO Mar09]餐厅清扫

    2009. [USACO Mar09]餐厅清扫 ★★☆   输入文件:cleanup.in   输出文件:cleanup.out   简单对比时间限制:1 s   内存限制:256 MB [题目描述] ...

  6. 动态树(LCT):HDU 4010 Query on The Trees

    Query on The Trees Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65768/65768 K (Java/Othe ...

  7. 进了ACM之后,我才清楚了自己的方向!!!

    2015年8月29日,从郴州比完赛后,状况并没有想象中的乐观,我被卡在了一个数学题上,本来以为这个题目真的是很容易,天真的以为打表就可以敲的出来,可是并没有,横在了一个结束条件上面,比完赛后真想抽自己 ...

  8. Registering Shell Extension Handlers

    最近在做Windows shell extension 的开发工作,对shell extension handler的注册机制有点疑问,以下摘自MSDN:http://msdn.microsoft.c ...

  9. hdoj 4552 怪盗基德的挑战书【求前缀在字符串中出现的次数之和】

    怪盗基德的挑战书 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Su ...

  10. 那些年我用awk时踩过的坑——awk使用注意事项

    由于项目经历原因,经常使用awk处理一些文本数据.甚至,我特意下载了一个windows上的awk:gawk.exe,这样在windows上也能享受awk处理数据的方便性,. 俗话说,"常在河 ...