windows下qt读写xml
时间: 2023-07-08 17:23:07 浏览: 111
在Windows下,可以使用Qt自带的QXmlStreamWriter和QXmlStreamReader类来读写XML文件。
以下是一个简单的示例代码,演示如何使用QXmlStreamWriter和QXmlStreamReader来读写XML文件:
```c++
#include <QFile>
#include <QXmlStreamWriter>
#include <QXmlStreamReader>
#include <QDebug>
void writeXml()
{
// 打开XML文件
QFile file("example.xml");
if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
qCritical() << "Failed to open file!";
return;
}
// 创建XML写入器
QXmlStreamWriter writer(&file);
// 写入XML文件头
writer.writeStartDocument();
// 写入根元素
writer.writeStartElement("root");
// 写入子元素和属性
writer.writeStartElement("person");
writer.writeAttribute("id", "1");
writer.writeTextElement("name", "Alice");
writer.writeTextElement("age", "20");
writer.writeEndElement();
writer.writeStartElement("person");
writer.writeAttribute("id", "2");
writer.writeTextElement("name", "Bob");
writer.writeTextElement("age", "30");
writer.writeEndElement();
// 写入根元素结束标记
writer.writeEndElement();
// 写入XML文件结束标记
writer.writeEndDocument();
// 关闭文件和XML写入器
file.close();
writer.clear();
}
void readXml()
{
// 打开XML文件
QFile file("example.xml");
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
qCritical() << "Failed to open file!";
return;
}
// 创建XML读取器
QXmlStreamReader reader(&file);
// 逐行读取XML文件内容
while (!reader.atEnd()) {
// 读取下一个XML元素
QXmlStreamReader::TokenType token = reader.readNext();
if (token == QXmlStreamReader::StartElement) {
// 如果是元素开始标签,输出元素名称和属性
qDebug() << "Element: " << reader.name();
QXmlStreamAttributes attrs = reader.attributes();
for (int i = 0; i < attrs.count(); i++) {
qDebug() << " Attribute: " << attrs[i].name() << "=" << attrs[i].value();
}
} else if (token == QXmlStreamReader::Characters) {
// 如果是纯文本内容,输出文本
qDebug() << "Text: " << reader.text();
}
}
// 关闭文件和XML读取器
file.close();
reader.clear();
}
int main()
{
writeXml();
readXml();
return 0;
}
```
这个示例代码会在Windows下创建名为“example.xml”的XML文件,并写入一些元素和属性。然后再读取这个XML文件,并输出其中的元素名称、属性和文本内容。如果XML文件不存在或无法打开,程序会输出错误信息。
阅读全文