Qt簡單讀寫xml
阿新 • • 發佈:2018-11-04
這裡只簡單舉例,讀寫是關聯在一起的。
xml文件的內容是:
<?xml version="1.0" encoding="UTF-8"?>
<fileinfo>
<filename>test</filename>
<filesize>1024MB</filesize>
</fileinfo>
首先在pro檔案中加入
QT += xml
所有程式碼
#include "widget.h" #include <QApplication> #include <QtXml> #include <QFile> #include <QDebug> void writeXml(){ QDomDocument doc; QFile file("test.xml"); if(file.open(QIODevice::ReadWrite)){ qDebug()<<"open successful!"; QString header("version=\"1.0\" encoding=\"UTF-8\""); doc.appendChild(doc.createProcessingInstruction("xml",header)); QDomElement tagFileInfo = doc.createElement("fileinfo"); //QDomElement相當於加標籤,QDomText相當於加內容<QDomElement>QDomText</QDomElement> QDomElement tagFileName = doc.createElement("filename"); QDomText textFileName = doc.createTextNode("test"); QDomElement tagFileSize = doc.createElement("filesize"); QDomText textFileSize = doc.createTextNode("1024MB"); tagFileName.appendChild(textFileName); tagFileSize.appendChild(textFileSize); tagFileInfo.appendChild(tagFileName); tagFileInfo.appendChild(tagFileSize); doc.appendChild(tagFileInfo); QTextStream stream(&file); stream<<doc.toString(); qDebug()<<"write xml ok!!"; }else{ qDebug()<<"open file error!"; } } void readXml(){ QFile file("test.xml"); if(file.open(QIODevice::ReadOnly)){ qDebug()<<"open success"; QDomDocument doc; doc.setContent(&file); //at(0)是<?xml version="1.0" encoding="UTF-8"?>,所以用at(1) QDomNodeList nodeList = doc.childNodes().at(1).childNodes(); for(int i=0;i<nodeList.count();i++){ QDomNode node = nodeList.at(i).firstChild(); qDebug()<<nodeList.at(i).toElement().tagName()<<":"<<node.toText().data(); } } } int main(int argc, char *argv[]) { writeXml(); readXml(); }