Qt xml序列化反序列化例子
时间: 2023-10-29 14:06:50 浏览: 48
在Qt中进行XML序列化和反序列化非常简单,可以使用QXmlStreamWriter和QXmlStreamReader类。下面是一个简单的例子:
序列化:
```
QFile file("example.xml");
if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
return;
QXmlStreamWriter writer(&file);
writer.setAutoFormatting(true);
writer.writeStartDocument();
writer.writeStartElement("root");
writer.writeStartElement("person");
writer.writeAttribute("name", "Alice");
writer.writeTextElement("age", "25");
writer.writeEndElement();
writer.writeStartElement("person");
writer.writeAttribute("name", "Bob");
writer.writeTextElement("age", "30");
writer.writeEndElement();
writer.writeEndElement();writer.writeEndDocument();
file.close();
```
反序列化:
```
QFile file("example.xml");
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
return;
QXmlStreamReader reader(&file);
while (!reader.atEnd()) {
if (reader.isStartElement()) {
if (reader.name() == "person") {
QString name = reader.attributes().value("name").toString();
reader.readNext();
int age = reader.readElementText().toInt();
qDebug() << "Name:" << name << "Age:" << age;
}
}
reader.readNext();
}
file.close();
```
需要注意的是,序列化和反序列化时需要保证XML格式的正确性,否则会出现解析错误。同时,需要注意XML中的特殊字符需要进行转义处理。