tinyxml2序列化
时间: 2023-07-18 11:03:12 浏览: 117
tinyxml2是一个轻量级的XML解析库,它也提供了方便的序列化功能。以下是一个简单的示例,将一个类的对象序列化为XML文档:
```c++
#include "tinyxml2.h"
#include <iostream>
#include <string>
using namespace tinyxml2;
class Person {
public:
std::string name;
int age;
Person() {}
Person(const std::string& n, int a) : name(n), age(a) {}
void Serialize(XMLNode* parent) const {
XMLDocument* doc = parent->GetDocument();
XMLElement* elem = doc->NewElement("Person");
elem->SetAttribute("name", name.c_str());
elem->SetAttribute("age", age);
parent->InsertEndChild(elem);
}
void Deserialize(const XMLNode* parent) {
const XMLElement* elem = parent->FirstChildElement("Person");
if (elem) {
name = elem->Attribute("name");
age = elem->IntAttribute("age");
}
}
};
int main() {
XMLDocument doc;
XMLNode* rootNode = doc.NewElement("Root");
doc.InsertFirstChild(rootNode);
Person p1("Alice", 30);
Person p2("Bob", 25);
p1.Serialize(rootNode);
p2.Serialize(rootNode);
doc.SaveFile("output.xml");
return 0;
}
```
在这个示例中,我们定义了一个包含姓名和年龄属性的`Person`类,并实现了`Serialize`和`Deserialize`方法。`Serialize`方法将对象序列化为一个XML元素,`Deserialize`方法从一个XML元素中反序列化对象。
在`main`函数中,我们创建一个XML文档和一个根节点。然后,我们创建两个`Person`对象并将它们序列化为XML元素,最后将它们作为子节点添加到根节点中。最后,我们将XML文档保存到文件中。
输出XML文件内容如下:
```xml
<?xml version="1.0"?>
<Root>
<Person name="Alice" age="30"/>
<Person name="Bob" age="25"/>
</Root>
```
这是一个简单的示例,你可以根据你的需求扩展它。注意,tinyxml2支持更高级别的序列化功能,例如序列化对象的嵌套等。
阅读全文