QtXML文件读写详解

发布时间:2023-05-18

一、Qt文件读写

Qt提供了多种文件读写的方法,可以使用QFile、QIODevice、QTextStream等类对文件进行读写。其中,QFile是针对二进制文件进行读写的类,而QTextStream则是针对文本文件进行读写的类。 使用QFile类读取文件的示例代码如下:

QFile file("test.txt");
if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
    QTextStream in(&file);
    QString line = in.readLine();
    // do something with line
    file.close();
}

代码中,先创建一个QFile对象来打开文件,然后使用QTextStream类来读取文件内容,并把文件内容按行读取到QString对象中。读取完成后,使用file.close()方法关闭文件。 使用QFile类写入文件的示例代码如下:

QFile file("test.txt");
if (file.open(QIODevice::WriteOnly | QIODevice::Text)) {
    QTextStream out(&file);
    out << "Hello, world!\n";
    file.close();
}

代码中,通过QFile::open()方法以WriteOnlyText模式打开文件后,使用QTextStream类的<<运算符来写入数据,并使用file.close()方法关闭文件。

二、Qt文件中写入XML

在Qt中,可以使用QXmlStreamWriter类来写入XML文件。QXmlStreamWriter类提供了开始元素、结束元素、写入元素内容等方法,方便用户进行XML文件的写入。 写入XML文件的示例代码如下:

QFile file("test.xml");
if (file.open(QIODevice::WriteOnly | QIODevice::Text)) {
    QXmlStreamWriter xmlWriter(&file);
    xmlWriter.setAutoFormatting(true);
    xmlWriter.writeStartDocument();
    xmlWriter.writeStartElement("root");
    xmlWriter.writeStartElement("person");
    xmlWriter.writeAttribute("name", "Tom");
    xmlWriter.writeTextElement("age", "18");
    xmlWriter.writeEndElement(); // person
    xmlWriter.writeEndElement(); // root
    xmlWriter.writeEndDocument();
    file.close();
}

代码中,首先创建QFile对象并打开文件,然后创建QXmlStreamWriter对象,并使用setAutoFormatting()方法启用自动缩进和换行。在写入XML之前,使用writeStartDocument()方法写入XML文件的声明,并使用writeStartElement()方法写入XML文件的根节点。在根节点中,使用writeStartElement()方法写入一个person节点,并使用writeAttribute()方法写入节点的属性。而使用writeTextElement()方法则是写入节点的内容。然后使用writeEndElement()方法关闭节点,在最后使用writeEndDocument()方法写入XML文件的结尾。最后用close()方法关闭文件。

三、Qt写TXT文件

存储一些非结构性数据时,文本文件是一种更好的方案,Qt提供了很多种写入文本文件的方法,而QTextStream则是其中最常用的。 写入TXT文件的示例代码如下:

QFile file("test.txt");
if (file.open(QIODevice::WriteOnly | QIODevice::Text)) {
    QTextStream out(&file);
    out << "Hello, world!\n";
    file.close();
}

代码中,首先创建QFile对象并打开文件,然后用QTextStream类的<<运算符来写入数据,并使用file.close()方法关闭文件。