Qt之XML文件的讀取和存儲

XML文件大家應該很熟悉,與ini一樣,XML也是常用的軟件配置文件格式。
在寫一個XML文件之前,首先工作是設計好XML文件的結(jié)構(gòu)。
這個時候推薦一款好用的XML設計工具XMLSpy可以在官網(wǎng)下載安裝https://www.altova.com/download,并申請使用版本序列號。
設計完的結(jié)構(gòu)如下:

XML設計結(jié)構(gòu)圖

設計完結(jié)構(gòu)之后,可以導出例子XML文件如下:
XML文件樣式

到這里,我們的xml文件就設計好了,剩下的就是用Qt來實現(xiàn)xml的讀寫操作。

Qt中實現(xiàn)對xml讀寫操作的類是QDomDocument相關(guān)的類,一般情況下需要包含下列三個頭文件:

#include <QFile>     
#include <QtXml\QtXml>  
#include <QtXml\QDomDocument>   
(1)寫XML

主要會用到下面的幾個函數(shù):

QDomDocument doc;  //QDomDocument類
QDomProcessingInstruction instruction = doc.createProcessingInstruction("xml", "version=\"1.0\" encoding=\"UTF-8\"");  
doc.appendChild(instruction);  
  
QDomElement root = doc.createElement("HInfoData");//創(chuàng)建根節(jié)點  QDomElemet元素
doc.appendChild(root);//添加根節(jié)點  
  
QDomElement strMac = doc.createElement("Mac");//創(chuàng)建元素節(jié)點  
root.appendChild(strMac);//添加元素節(jié)點到根節(jié)點  
QDomText strMacNodeText = doc.createTextNode(data._strMac);//創(chuàng)建元素文本  
strMac.appendChild(strMacNodeText);//添加元素文本到元素節(jié)點  

保存成xml文件

QFile file("./test.xml");  
if (!file.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text))  
    return false;  
QTextStream out(&file);  
out.setCodec("UTF-8");  
doc.save(out, 4, QDomNode::EncodingFromTextStream);  
file.close();  

(2)讀XML

QDomDocument doc;  
QFile file("./test.xml");  
if (!file.open(QIODevice::ReadOnly))  
{  
    return false;  
}  
  
if (!doc.setContent(&file))   
{  
    file.close();  
    return false;  
}  
file.close();  
  
QDomElement root = doc.documentElement();//讀取根節(jié)點  
QDomNode node = root.firstChild();//讀取第一個子節(jié)點   QDomNode 節(jié)點
while (!node.isNull())  
{  
    QString tagName = node.toElement().tagName();  //節(jié)點元素名稱
    if (tagName.compare("Mac") == 0) //節(jié)點標記查找  
    {  
        infodata._strMac = node.toElement().text();//讀取節(jié)點文本  
    }  
    else if (tagName.compare("System") == 0)  
    {  
        infodata._strSystem = node.toElement().text();  
    }  
    node = node.nextSibling();//讀取下一個兄弟節(jié)點  
}  

Qt中QDomDocument實現(xiàn)XML讀寫大致就這些內(nèi)容,剩下一些細節(jié)可以查看Qt Assistant

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容