首页 > 代码库 > pugixml使用教程
pugixml使用教程
?
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 = channel_node.child(_T("name"));
????????????printf("name : %s\n",name_node.first_child().value());
????????????pugi::xml_node sex_node = channel_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 = channels_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使用教程