[转]pugixml使用教程

转自: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" );
 
}
    

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值