Qt推荐使用QXmlStreamReader和QXmlStreamWriter处理XML文件。1. QXmlStreamReader以流式方式逐节点解析,内存占用低,适合大文件;通过readNext()读取token,结合isStartElement()、isEndElement()等判断节点类型,可灵活提取数据。2. QXmlStreamWriter提供writeStartElement()、writeAttribute()等方法生成格式化XML,调用setAutoFormatting(true)提升可读性,自动处理编码与转义。3. 使用时需检查文件打开状态,读取后验证hasError(),写入注意层级匹配;相比DOM方式更高效省资源,适用于复杂或大型XML场景。

Qt 框架提供了多种方式读写 XML 文件,其中 QXmlStreamReader 和 QXmlStreamWriter 是最常用且推荐的方式。它们基于流式处理,内存占用低、效率高,适合处理大文件或结构复杂的 XML 数据。
QXmlStreamReader 以逐节点的方式解析 XML,支持跳过未知内容,适用于灵活的解析场景。
基本使用步骤:
#include <QFile>
#include <QXmlStreamReader>
#include <iostream>
void readXml(const QString &fileName)
{
QFile file(fileName);
if (!file.open(QIODevice::ReadOnly))
return;
QXmlStreamReader reader(&file);
while (!reader.atEnd()) {
reader.readNext();
if (reader.isStartElement()) {
if (reader.name() == "setting") {
QXmlStreamAttributes attrs = reader.attributes();
if (attrs.hasAttribute("name") && attrs.hasAttribute("value")) {
std::cout << "Name: "
<< attrs.value("name").toString().toStdString()
<< ", Value: "
<< attrs.value("value").toString().toStdString()
<< std::endl;
}
}
}
}
if (reader.hasError()) {
std::cerr << "Error: " << reader.errorString().toStdString().c_str();
}
file.close();
}
常见判断方法:
QXmlStreamWriter 提供简洁 API 来生成格式良好的 XML 文件,自动处理转义和编码。
基本流程:
#include <QFile>
#include <QXmlStreamWriter>
void writeXml(const QString &fileName)
{
QFile file(fileName);
if (!file.open(QIODevice::WriteOnly))
return;
QXmlStreamWriter writer(&file);
writer.setAutoFormatting(true); // 启用格式化输出
writer.writeStartDocument();
writer.writeStartElement("config");
writer.writeStartElement("setting");
writer.writeAttribute("name", "volume");
writer.writeAttribute("value", "80");
writer.writeEndElement(); // setting
writer.writeStartElement("setting");
writer.writeAttribute("name", "fullscreen");
writer.writeAttribute("value", "true");
writer.writeEndElement(); // setting
writer.writeEndElement(); // config
writer.writeEndDocument();
file.close();
}
关键方法说明:
使用这两个类时需要注意以下几点:
对于嵌套结构,可以结合栈或状态变量跟踪层级;对于大型文件,流式处理比 DOM 方式(如 QDomDocument)更节省内存。
基本上就这些。掌握 QXmlStreamReader 和 QXmlStreamWriter 后,就能高效处理大多数 XML 场景了。以上就是Qt框架怎么读写XML文件_Qt框架QXmlStreamReader/Writer使用教程的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号