qt xml文件解析示例
时间: 2023-06-23 14:09:08 浏览: 100
qt xml实例
以下是一个基本的 Qt XML 文件解析示例:
```cpp
#include <QCoreApplication>
#include <QDebug>
#include <QFile>
#include <QXmlStreamReader>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QFile file(":/example.xml"); // 从文件中读取 XML 数据
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
qDebug() << "Failed to open file!";
return -1;
}
QXmlStreamReader reader(&file);
while (!reader.atEnd() && !reader.hasError()) {
QXmlStreamReader::TokenType token = reader.readNext();
if (token == QXmlStreamReader::StartElement) {
if (reader.name() == "person") {
qDebug() << "Person:";
// 获取 person 元素的属性
QXmlStreamAttributes attributes = reader.attributes();
if (attributes.hasAttribute("name")) {
qDebug() << "Name:" << attributes.value("name");
}
if (attributes.hasAttribute("age")) {
qDebug() << "Age:" << attributes.value("age");
}
}
else if (reader.name() == "address") {
qDebug() << "Address:";
// 获取 address 元素的文本内容
QString address = reader.readElementText();
qDebug() << address;
}
}
}
file.close();
return 0;
}
```
在这个示例中,我们首先打开一个 XML 文件并创建一个 `QXmlStreamReader` 对象来读取它。然后我们在循环中遍历 XML 文件的所有元素,并根据元素的名称和属性来执行不同的操作。
例如,当我们遇到一个名为 `person` 的元素时,我们会打印出 `name` 和 `age` 属性的值。当我们遇到一个名为 `address` 的元素时,我们会读取该元素的文本内容并打印出来。
请注意,上面的示例中使用了 `:/example.xml` 的文件路径来从 Qt 资源文件中读取 XML 数据。如果您想从本地文件中读取 XML 数据,则应该使用本地文件路径代替。
阅读全文