• [转]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 ",name_node.first_child().value());
     
                pugi::xml_node sex_node = student_node.child(_T("sex"));
     
                printf("sex: %s ",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");
     
    }
        
  • 相关阅读:
    九宫格小游戏源码分享
    DeviceOne 竟然做出来如此复杂的App
    DeviceOne 让你一见钟情的App快速开发平台
    MySQL初始化
    MySQL的操作
    MySQL
    Library
    Python模块
    Anaconda的使用
    面向对象之成员修饰 特殊成员 methclass
  • 原文地址:https://www.cnblogs.com/lyggqm/p/10131155.html
Copyright © 2020-2023  润新知