QDomElement遍歷節(jié)點

#include <QtGui/QApplication>

#include "mainwindow.h"

#include <QDialog>

#include <QFile>

#include <QDebug>

#include <QDomDocument>

#include <QFile>

QDomDocument m_doc;

bool? changeSave();

bool openXmlFile(QString FilePath);

int main(int argc, char *argv[])

{

? ? QApplication a(argc, argv);

? ? MainWindow w;

? ? w.show();

? ? changeSave();

? ? return a.exec();

}

bool openXmlFile(QString FilePath)

{

? ? QFile file( FilePath );

? ? if( !file.open( QFile::ReadOnly | QFile::Text? ) )

? ? {

? ? ? ? qDebug() << QObject::tr("error::ParserXML->OpenXmlFile->file.open->%s\n") << FilePath;


? ? ? ? return false;

? ? }


? ? if( !m_doc.setContent( &file ) )

? ? {

? ? ? ? qDebug() << QObject::tr("error::ParserXML->OpenXmlFile->doc.setContent\n") << FilePath;


? ? ? ? file.close();

? ? ? ? return false;

? ? }

? ? file.close();

? ? return true;

}

bool? changeSave()

{


? ? if(!openXmlFile("I:/q.xml"))

? ? {

? ? ? ? return false;

? ? }

? ? //修改保存xml

? //document表示對應文檔

? //documentElement取根節(jié)點

? ? QDomElement root = m_doc.documentElement();? ? ? ? //document表示對應文檔

? ? if(root.tagName()!= "kdevelop")

? ? ? ? return false;

? ? QDomNode n = root.firstChild();

? ? while ( !n.isNull() )

? ? {

? ? ? ? //對根節(jié)點可以取得其對應的子節(jié)點

? ? ? ? QDomElement e = n.toElement();

? ? ? ? if( !e.isNull())

? ? ? ? {

? ? ? ? ? ? if( e.nodeName() == "general" )

? ? ? ? ? ? {

? ? ? ? ? ? ? ? QDomNodeList list = e.childNodes(); //獲得元素e的所有子節(jié)點的列表

? ? ? ? ? ? ? ? for(int a=0; a<list.count(); a++) //遍歷該列表

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? QDomNode node = list.at(a);

? ? ? ? ? ? ? ? ? ? if(node.isElement())

? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? if( node.nodeName() == "author" )

? ? ? ? ? ? ? ? ? ? ? ? {

? ??????????????????????????//標簽之間的內容作為節(jié)點的子節(jié)點出現(xiàn),得到原來的子節(jié)點

? ? ? ? ? ? ? ? ? ? ? ? ? ? QDomNode oldnode = node.firstChild();? ?

? ??????????????????????????//用提供的value值來設置子節(jié)點的內容

? ? ? ? ? ? ? ? ? ? ? ? ? ? node.firstChild().setNodeValue("csdn");? ?

????????????????????????????//值修改過后

? ? ? ? ? ? ? ? ? ? ? ? ? ? QDomNode newnode = node.firstChild();? ??

? ??????????????????????????//調用節(jié)點的replaceChild方法實現(xiàn)修改功能

? ? ? ? ? ? ? ? ? ? ? ? ? ? node.replaceChild(newnode,oldnode);? ? ??

? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? if( node.nodeName() == "email" )

? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? QDomNode oldnode = node.firstChild();?

? ? ? ? ? ? ? ? ? ? ? ? ? ? node.firstChild().setNodeValue("test@tom.com");

? ? ? ? ? ? ? ? ? ? ? ? ? ? QDomNode newnode = node.firstChild();

? ? ? ? ? ? ? ? ? ? ? ? ? ? node.replaceChild(newnode,oldnode);

? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }? ? ?

? ? ? ? }

? ? ? ? n = n.nextSibling();

? ? }

? ? QFile filexml("I:/q.xml");

? ? if( !filexml.open( QFile::WriteOnly | QFile::Truncate) ){

? ? ? ? qWarning("error::ParserXML->writeOperateXml->file.open\n");

? ? ? ? return false;

? ? }

? ? QTextStream ts(&filexml);

? ? ts.reset();

? ? ts.setCodec("utf-8");

? ? m_doc.save(ts, 4, QDomNode::EncodingFromTextStream);

? ? filexml.close();

? ? return true;

}

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末交洗,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子昂验,更是在濱河造成了極大的恐慌错邦,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異赘理,居然都是意外死亡铅歼,警方通過查閱死者的電腦和手機公壤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來椎椰,“玉大人厦幅,你說我怎么就攤上這事】” “怎么了确憨?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長瓤的。 經常有香客問我休弃,道長,這世上最難降的妖魔是什么圈膏? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任塔猾,我火速辦了婚禮,結果婚禮上本辐,老公的妹妹穿的比我還像新娘桥帆。我一直安慰自己,他們只是感情好慎皱,可當我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布老虫。 她就那樣靜靜地躺著,像睡著了一般茫多。 火紅的嫁衣襯著肌膚如雪祈匙。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天天揖,我揣著相機與錄音夺欲,去河邊找鬼。 笑死今膊,一個胖子當著我的面吹牛些阅,可吹牛的內容都是我干的。 我是一名探鬼主播斑唬,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼市埋,長吁一口氣:“原來是場噩夢啊……” “哼黎泣!你這毒婦竟也來了?” 一聲冷哼從身側響起缤谎,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤抒倚,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后坷澡,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體托呕,經...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年频敛,在試婚紗的時候發(fā)現(xiàn)自己被綠了项郊。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡姻政,死狀恐怖呆抑,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情汁展,我是刑警寧澤鹊碍,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站食绿,受9級特大地震影響侈咕,放射性物質發(fā)生泄漏。R本人自食惡果不足惜器紧,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一耀销、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧铲汪,春花似錦熊尉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至齿梁,卻和暖如春催植,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背勺择。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工创南, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人省核。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓稿辙,卻偏偏與公主長得像,于是被迫代替她去往敵國和親气忠。 傳聞我的和親對象是個殘疾皇子邻储,可洞房花燭夜當晚...
    茶點故事閱讀 45,044評論 2 355