歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> QT通過DOM 讀寫XML的一個小問題

QT通過DOM 讀寫XML的一個小問題

日期:2017/3/1 10:19:24   编辑:Linux編程

最近做一個背單詞的小東東,需要在指定日期提示信息,用到了xml.工程不大,自然使用DOM.

工程中需要在指定日期中插入提示信息,最開始的想法是"查找+插入"的模式,需要同時讀寫操作,因此

QFile file("struct.xml");
if (!file.open(QFile::ReadWrite )){return;}

更改完畢後

QTextStream out(&fileWrite);
doc.save(out,3);
fileWrite.close();

程序運行,沒有錯誤提示.

但是最終得到的xml文件如下

<ROOT>
<DATE DAY="周五 六月 15 2012">
<LIST>Old</LIST>
</DATE>
</ROOT>


<ROOT>
<DATE DAY="周五 六月 15 2012">
<LIST>Old</LIST>
<LIST>New</LIST>
</DATE>
</ROOT>

顯然第一段是需要被替換,不應該出現的.調整了以下思路,更改程序如下

QFile fileRead("struct.xml");
if (!fileRead.open(QFile::ReadOnly )){return;} ///只讀模式打開文件


QString errorStr;
int errorLine;
int errorColumn;

QDomDocument doc;
if (!doc.setContent(&fileRead, false, &errorStr, &errorLine, ///把fileRead塞進一個QDomDocument
&errorColumn)) {
qDebug() << "Error: Parse error at line " << errorLine << ", "
<< "column " << errorColumn << ": "
<< qPrintable(errorStr) ;
return ;//false;
}

fileRead.close(); ///過河拆橋,關掉fileRead

更改完畢後

QFile fileWrite("struct.xml");

if(!fileWrite.open(QIODevice::WriteOnly | QIODevice::Truncate)) return ; ///寫入模式打開文件
QTextStream out(&fileWrite);


doc.save(out,3);
fileWrite.close();

Copyright © Linux教程網 All Rights Reserved