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