转自:https://www.cnblogs.com/ltm5180/p/3989125.html

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信息读取的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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中的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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");
 
}
    

最新文章

  1. poj3468 A Simple Problem with Integers(zkw区间修改模板)
  2. gfw列表
  3. 蘑菇街2015校招 Java研发笔试题 详解
  4. Linux命令总结【待续】
  5. The Model Complexity Myth
  6. java 汉字转拼音
  7. 4句代码读取Excel到DataSet(非Excel组件)
  8. ArcGIS SDE 10.1 for Postgresql 服务连接配置
  9. 什么是WEBserver? 经常使用的WEBserver有哪些?
  10. 判断括号字符串是否为合法+求n对括号的所有组合
  11. 【java设计模式】【创建模式Creational Pattern】建造模式Builder Pattern
  12. java——内部类
  13. this.setData , that.setData , this.data.val三者之间的区别和作用
  14. modbus 寄存器介绍
  15. Confluence 6 配置服务器基础地址备注
  16. HttpSession的认识
  17. 在Ubuntu中搭建KMS服务器
  18. Cookie、sessionStorage与localStorage的区别
  19. mysql 日志清理
  20. 嵌入式Linux学习(一)

热门文章

  1. self: 限制并发量asyncio
  2. Scrapy框架学习 - 使用内置的ImagesPipeline下载图片
  3. 手头没证书,如何给https做代理?Nginx TCP转发
  4. Prometheus监控学习笔记之Prometheus的架构及持久化
  5. php+redis,延迟任务 实现自动取消订单,自动完成订单
  6. mint-ui之datetime-picker使用
  7. 原生js封装的获取某一天是当年的第几周方法
  8. ubuntu+anaconda+tensorflow 及相关问题
  9. 【python027--集合】
  10. 再谈 linux 的sed用法