qt5-入门-xml文件读写

本地环境:

win10专业版,64位,Qt 5.12

代码已经测试通过。其他例子日后更新。


假设需要读写的xml文档结构如下图所示:

那么首先需要修改.pro文件,增加一句:

然后执行qmake。

代码

cpp 复制代码
#include <QtXml/QDomDocument>
#include <QFile>

// main中

// 写入XML文件
QDomDocument doc;
QDomElement root = doc.createElement("ArrayOfEnzymeInfo");
doc.appendChild(root);
for (int i = 0; i < 5; i++) {
    QDomElement EnzymeInfo = doc.createElement("EnzymeInfo");
    root.appendChild(EnzymeInfo);
    QDomElement name = doc.createElement("name");
    QDomText nameText = doc.createTextNode("name");
    name.appendChild(nameText);
    EnzymeInfo.appendChild(name);
    QDomElement age = doc.createElement("age");
    QDomText ageText = doc.createTextNode("30");
    age.appendChild(ageText);
    EnzymeInfo.appendChild(age);
}


QFile file("data.xml");
if (file.open(QIODevice::WriteOnly)) {
    QTextStream stream(&file);
    stream << doc.toString();
    file.close();
    qDebug() << "XML file written successfully.";
} else {
    qDebug() << "Failed to write XML file.";
}

// 读取XML文件
QDomDocument readFile;
if (!readFile.setContent(&file)) {
    qDebug() << "Failed to open XML file.";
    return 1;
}

QDomElement readRoot = readFile.firstChildElement();

QDomNodeList EnzymeInfos = readRoot.elementsByTagName("EnzymeInfo");
for (int i = 0; i < EnzymeInfos.size(); i++) {
    QDomElement EnzymeInfoNode = EnzymeInfos.at(i).toElement();

    QString EnzymeInfoName = EnzymeInfoNode.elementsByTagName("name").at(0).toElement().text();
    QString personAge = EnzymeInfoNode.elementsByTagName("age").at(0).toElement().text();

    qDebug() << "EnzymeInfo " << i+1 << ": Name - " << EnzymeInfoName << ", Age - " << personAge;
}

/* 输出:
XML file written successfully.
EnzymeInfo  1 : Name -  "name" , Age -  "30"
EnzymeInfo  2 : Name -  "name" , Age -  "30"
EnzymeInfo  3 : Name -  "name" , Age -  "30"
EnzymeInfo  4 : Name -  "name" , Age -  "30"
EnzymeInfo  5 : Name -  "name" , Age -  "30"
*/

报错处理

undefined reference to `__imp__ZN12QDomDocumentC1Ev'

表示编译器找不到QDomDocument类的默认构造函数的实现。

解决就是修改.pro文件,增加QT += xml

Makefile error 3

如果添加了QT += xml之后出现了Makefile error 3,可能是因为Qt的XML模块配置错误。一般还是上面的处理方法。其他可能的处理方案还有:

  • 删除项目目录下的生成文件(如Makefile、.pro.user等)
  • 检查项目文件.pro中的语法是否正确,确保QT += xml语句没有错误
  • 打开Qt Creator的项目设置,检查项目配置是否正确,特别是构建选项和依赖项是否正确配置
  • 重新运行qmake以更新项目文件
  • 手动编辑Makefile添加所需的XML模块依赖项
相关推荐
Lyrig~19 分钟前
ClaudeCode-cli Windows终端安装,并配置Openrouter链接
windows
扬帆破浪22 分钟前
免费开源AI软件.桌面单机版,可移动的AI知识库,察元 AI桌面版:本地离线知识库的真完全离线 内网无外网装察元AI的拼装步骤
人工智能·windows·开源·电脑·知识图谱
nature_forest1 小时前
vivado2018.2固化程序方法之.bin文件固化法
windows·fpga开发
code_whiter2 小时前
C++10(list)
c++·windows·list
夕除2 小时前
spring boot--08
开发语言·windows·python
new【一个】对象2 小时前
Python 包管理器uv
人工智能·windows·python
一只AI打工虾的自我修养2 小时前
DeepSeek V4.1 vs Ollama vs LocalClaw:Mac本地AI工具横评
人工智能·windows·macos
www.022 小时前
(一)windows下反代软件CLIProxyAPI 安装与基础使用(个人记录)
人工智能·windows·算力·token·反代·cliproxyapi
Byron Loong3 小时前
【逆向】Windows 系统调用流程 + SSDT/ShadowSSDT/ETW/VT Hook + 内核 / 用户层区别
windows
扬帆破浪3 小时前
免费开源AI软件.桌面单机版,可移动的AI知识库,察元 AI桌面版:公司只允许装签名应用 给察元AI打企业内部分发包
人工智能·windows·电脑·知识图谱