怎么利用tinyxml2对xml序列化
时间: 2023-11-27 11:49:15 浏览: 115
TinyXML-2 是一个开源的 C++ 库,主要用于解析和生成 XML,因此它也提供了对 XML 的序列化和反序列化功能。下面是一个简单的示例,演示如何使用 TinyXML-2 对 XML 进行序列化。
假设我们有一个 Person 类,它有两个属性 name 和 age:
```cpp
class Person {
public:
std::string name;
int age;
Person(const std::string& name, int age) : name(name), age(age) {}
};
```
我们想要将一个 Person 对象转换为 XML,可以按照以下步骤操作:
1. 导入头文件:
```cpp
#include "tinyxml2.h"
```
2. 创建一个 XML 文件:
```cpp
tinyxml2::XMLDocument doc;
```
3. 创建根元素:
```cpp
auto root = doc.NewElement("Person");
doc.InsertEndChild(root);
```
4. 将 Person 对象的属性添加到根元素中:
```cpp
auto nameElem = doc.NewElement("name");
nameElem->SetText(person.name.c_str());
root->InsertEndChild(nameElem);
auto ageElem = doc.NewElement("age");
ageElem->SetText(person.age);
root->InsertEndChild(ageElem);
```
5. 将 XML 保存到文件中:
```cpp
doc.SaveFile("person.xml");
```
完整的代码示例如下:
```cpp
#include <iostream>
#include "tinyxml2.h"
class Person {
public:
std::string name;
int age;
Person(const std::string& name, int age) : name(name), age(age) {}
};
int main() {
Person person("张三", 20);
tinyxml2::XMLDocument doc;
auto root = doc.NewElement("Person");
doc.InsertEndChild(root);
auto nameElem = doc.NewElement("name");
nameElem->SetText(person.name.c_str());
root->InsertEndChild(nameElem);
auto ageElem = doc.NewElement("age");
ageElem->SetText(person.age);
root->InsertEndChild(ageElem);
doc.SaveFile("person.xml");
return 0;
}
```
运行完上面的代码后,会在当前目录下生成一个名为 "person.xml" 的文件,其中包含以下内容:
```xml
<?xml version="1.0"?>
<Person>
<name>张三</name>
<age>20</age>
</Person>
```
这就是一个使用 TinyXML-2 对 XML 进行序列化的简单示例。
阅读全文