赞
踩
本地环境:
win10专业版,64位,Qt 5.12
代码已经测试通过。其他例子日后更新。
假设需要读写的xml文档结构如下图所示:
那么首先需要修改.pro
文件,增加一句:
然后执行qmake。
#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" */
表示编译器找不到QDomDocument
类的默认构造函数的实现。
解决就是修改.pro
文件,增加QT += xml
如果添加了QT += xml
之后出现了Makefile error 3,可能是因为Qt的XML模块配置错误。一般还是上面的处理方法。其他可能的处理方案还有:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。