qt读取xml文件,若文件不存在则新建一个
时间: 2024-02-10 18:37:53 浏览: 109
可以使用Qt自带的QXmlStreamReader和QXmlStreamWriter类来读写XML文件,并通过QFile类来判断文件是否存在。
以下是一个示例代码,可以实现读取XML文件并在文件不存在时创建一个新文件:
```cpp
#include <QtXml>
#include <QFile>
void readXmlFile(QString fileName)
{
QFile file(fileName);
if (!file.exists()) {
// 文件不存在,创建一个新的
QXmlStreamWriter writer(&file);
writer.setAutoFormatting(true);
writer.writeStartDocument();
writer.writeStartElement("root");
writer.writeEndElement();
writer.writeEndDocument();
file.close();
// 重新打开文件以进行读取
file.open(QIODevice::ReadOnly);
}
// 文件存在,读取XML内容
QXmlStreamReader reader(&file);
while (!reader.atEnd()) {
if (reader.isStartElement()) {
if (reader.name() == "element1") {
QString value = reader.readElementText();
// 处理读取到的值
}
// 其他元素的读取操作
}
reader.readNext();
}
file.close();
}
```
在该示例代码中,首先通过QFile类的exists()函数判断文件是否存在。如果文件不存在,则使用QXmlStreamWriter类创建一个新的XML文件。创建新文件时,需要调用writeStartDocument()函数写入XML文档的头部信息,然后使用writeStartElement()写入根元素,最后调用writeEndElement()和writeEndDocument()函数结束XML文件的写入。创建文件后,需要关闭并重新打开文件以进行读取操作。
如果文件已经存在,则使用QXmlStreamReader类读取文件内容。在读取XML时,可以通过isStartElement()函数判断当前位置是否为元素的开始位置,如果是则使用name()函数获取元素的名称,并使用readElementText()函数读取元素的文本内容。读取完成后需要调用readNext()函数将读取位置移动到下一个节点。
需要注意的是,在读取XML文件后,需要调用QFile类的close()函数关闭文件。
阅读全文