Qt讀寫XML文件的方法詳解(含源碼+注釋)_第1頁
Qt讀寫XML文件的方法詳解(含源碼+注釋)_第2頁
Qt讀寫XML文件的方法詳解(含源碼+注釋)_第3頁
Qt讀寫XML文件的方法詳解(含源碼+注釋)_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第Qt讀寫XML文件的方法詳解(含源碼+注釋)目錄一、示例XML文件內(nèi)容二、XML文件的寫入三、XML文件的讀取3.1文件讀取源碼3.2讀取結(jié)果示例總結(jié)相關(guān)文章

一、示例XML文件內(nèi)容

下方為本文所使用的xml文件的內(nèi)容

xmlversion="1.0"encoding="UTF-8"

root

childNode1attruKey="attriVal"childNode1Val/childNode1

childNode2attruKey="attriVal"

cChildNode1shuxing1="1"cChildNode1Val/cChildNode1

cChildNode2shuxing2="2"cChildNode2Val/cChildNode2

/childNode2

/root

二、XML文件的寫入

下方為XML文件寫入的源碼,其中代碼內(nèi)容按順序如下:

QDomDocument對象的創(chuàng)建和xml文件頭的添加創(chuàng)建根節(jié)點(diǎn)創(chuàng)建包含屬性和節(jié)點(diǎn)值的子節(jié)點(diǎn)創(chuàng)建較為復(fù)雜的子節(jié)點(diǎn)(包含屬性和第三級(jí)節(jié)點(diǎn))寫入文件

//創(chuàng)建QDomDocument對象

QDomDocumentxDoc;

QDomProcessingInstructioninStruction;

//寫入xml文件頭(xml版本信息和編碼信息)

inStruction=xDoc.createProcessingInstruction("xml","version=\"1.0\"encoding=\"UTF-8\"");

xDoc.appendChild(inStruction);

//創(chuàng)建根節(jié)點(diǎn)并將其添加到xDoc中

QDomElementroot=xDoc.createElement("root");

xDoc.appendChild(root);

//創(chuàng)建子節(jié)點(diǎn)1

QDomElementchildNode1=xDoc.createElement("childNode1");

//為子節(jié)點(diǎn)childNode1設(shè)置屬性及屬性值

childNode1.setAttribute("attruKey","attriVal");

//!為子節(jié)點(diǎn)childNode1添加節(jié)點(diǎn)值

//!創(chuàng)建QDomText對象并設(shè)置其值

QDomTextnodeVal=xDoc.createTextNode("childNode1Val");

//使用QDomElement對象的節(jié)點(diǎn),添加節(jié)點(diǎn)值需添加QDomText對象,否則有可能不顯示該值

childNode1.appendChild(nodeVal);

//將子節(jié)點(diǎn)1添加到根節(jié)點(diǎn)中

root.appendChild(childNode1);

//!創(chuàng)建一個(gè)多級(jí)節(jié)點(diǎn)childNode2

//創(chuàng)建多級(jí)節(jié)點(diǎn)2

QDomElementchildNode2=xDoc.createElement("childNode2");

//為多級(jí)節(jié)點(diǎn)childNode2設(shè)置屬性及屬性值

childNode2.setAttribute("attruKey","attriVal");

//創(chuàng)建多級(jí)節(jié)點(diǎn)的子節(jié)點(diǎn)1

QDomElementcChildNode1=xDoc.createElement("cChildNode1");

//設(shè)置cChildNode1的屬性和值

cChildNode1.setAttribute("shuxing1",1);

//設(shè)置cChildNode1的節(jié)點(diǎn)值

cChildNode1.appendChild(xDoc.createTextNode("cChildNode1Val"));

//將cChildNode1節(jié)點(diǎn)添加到多級(jí)節(jié)點(diǎn)中

childNode2.appendChild(cChildNode1);

//創(chuàng)建多級(jí)節(jié)點(diǎn)的子節(jié)點(diǎn)2

QDomElementcChildNode2=xDoc.createElement("cChildNode2");

//設(shè)置cChildNode2的屬性和值

cChildNode2.setAttribute("shuxing2",2);

//設(shè)置cChildNode2的節(jié)點(diǎn)值

cChildNode2.appendChild(xDoc.createTextNode("cChildNode2Val"));

//將cChildNode2節(jié)點(diǎn)添加到多級(jí)節(jié)點(diǎn)中

childNode2.appendChild(cChildNode2);

//將多級(jí)節(jié)點(diǎn)childNode2添加到根節(jié)點(diǎn)中

root.appendChild(childNode2);

//指定xml文件路徑

QFilefile("./xmlTest.xml");

//以只讀方式打開,并且會(huì)清空文件內(nèi)容

if(!file.open(QIODevice::WriteOnly|QIODevice::Truncate))

return0;

//使用文本流寫入文件

QTextStreamoutputStream(file);

xDoc.save(outputStream,4);//縮進(jìn)四格

file.close();

三、XML文件的讀取

3.1文件讀取源碼

下方為XML文件讀取的源碼,其中代碼內(nèi)容按順序如下:

創(chuàng)建QDomDocument對象并打開文件添加其數(shù)據(jù)源獲取根節(jié)點(diǎn)讀取較為簡單的子節(jié)點(diǎn)(僅一個(gè)屬性和節(jié)點(diǎn)值)讀取較為復(fù)雜的子節(jié)點(diǎn)(包含屬性和不同的)

//創(chuàng)建QDomDocument對象

QDomDocumentxDoc;

//指定讀取的xml文件路徑

QFilefile("./xmlTest.xml");

//xml文件以只讀方式打卡

if(!file.open(QIODevice::ReadOnly))

return0;

//調(diào)用setContent函數(shù)設(shè)置數(shù)據(jù)源

if(!xDoc.setContent(file)){

file.close();

return0;

fil

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論