QT解析XML
时间: 2023-07-04 14:04:41 浏览: 126
Qt解析XML文件
4星 · 用户满意度95%
在Qt中,可以使用QXmlStreamReader和QXmlStreamWriter类来解析和生成XML文档。
QXmlStreamReader类提供了一种逐步读取XML文档的方式。您可以使用它来遍历XML文档中的元素、属性和文本节点,并从中获取信息。以下是一个使用QXmlStreamReader类解析XML文档的示例:
```cpp
QFile file("example.xml");
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
return;
QXmlStreamReader reader(&file);
while (!reader.atEnd()) {
reader.readNext();
if (reader.isStartElement()) {
if (reader.name() == "person") {
QString name = reader.attributes().value("name").toString();
qDebug() << "Name:" << name;
}
}
}
file.close();
```
在上面的示例中,我们打开名为“example.xml”的文件并创建一个QXmlStreamReader对象。然后,我们使用一个循环来遍历XML文档中的所有元素。如果遇到一个起始元素,我们检查它是否是一个名为“person”的元素。如果是,我们获取其“name”属性的值并将其打印出来。
QXmlStreamWriter类提供了一种生成XML文档的方式。您可以使用它来创建元素、属性和文本节点,并将它们写入XML文档中。以下是一个使用QXmlStreamWriter类生成XML文档的示例:
```cpp
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();
```
在上面的示例中,我们打开名为“example.xml”的文件并创建一个QXmlStreamWriter对象。然后,我们使用它来生成XML文档。我们首先调用writeStartDocument()方法来写入XML文档的头部信息。然后,我们使用writeStartElement()和writeEndElement()方法来创建根元素和子元素。我们还使用writeAttribute()和writeTextElement()方法来添加属性和文本节点。最后,我们调用writeEndDocument()方法来完成XML文档的写入。
阅读全文