1. 程式人生 > >[轉]pugixml使用教程

[轉]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" );   }