資源簡介
QT對XML進行,創建文件,添加節點,查找節點,刪除節點,在節點下添加鍵值,讀取指定節點下鍵值。最多支持4層節點。如果要需要在多級的節點進行操作,可以參照我的函數進行添加重載函數,很方便的。

代碼片段和文件信息
#include?“ModelConfigurationxml.h“
#include?
#include?
#include?
ModelConfigurationxml::ModelConfigurationxml()
{
}
void?ModelConfigurationxml::createxml(QString?filename)
{
????QFile?file(filename);
????file.open(QIODevice::ReadWrite);
????QDomDocument?doc;
//????QDomProcessingInstruction?instruction;
//????instruction?=?doc.createProcessingInstruction(“xml““version=\“1.0\“?encoding=\“GB2312\““);
//????doc.appendChild(instruction);
????QDomElement?root?=?doc.createElement(“YiChiProject“);
????doc.appendChild(root);
????QTextStream?out(&file);
????doc.save(out4);
????file.close();
}
//?添加1級節點
void?ModelConfigurationxml::addNode(QString?filenameQString?node1)
{
????QFile?file(filename);
????if?(!file.open(QIODevice::ReadOnly?|?QFile::Text))?{
????????qDebug()<<“addRootNode?open?for?add?error...“?;
????}
????QDomDocument?doc;
????doc.setContent(&file?false);
????file.close();
????QDomElement?root?=?doc.documentElement();
????QDomNode?nd?=?findNode(root?node1);
????if(nd.isNull()){?//檢查節點是不是不存在
????????QDomElement?child?=?doc.createElement(node1);
????????root.appendChild(child);
????}
????if(!file.open(QIODevice::WriteOnly|QIODevice::Truncate))
????qDebug()?<“open?for?add?error!“;
????QTextStream?out(&file);
????doc.save(out4);
????file.close();
}
//?添加二級節點
void?ModelConfigurationxml::addNode(QString?filename?QString?node1?QString?node2)
{
????QFile?file(filename);
????if?(!file.open(QIODevice::ReadOnly))?{
????????qDebug()<<“addRootChildNode?open?for?add?error...“?;
????}
????QDomDocument?doc;
????doc.setContent(&file?false);
????file.close();
????QDomElement?root?=?doc.documentElement();
????//查找這個步驟
????QDomNode?nd1?=?findNode(root?node1);
????if(nd1.isNull()){??//?檢查rootNode節點是否存在
????????addNode(filename?node1);
????????file.open(QIODevice::ReadOnly);
????????doc.setContent(&file?false);
????????file.close();
????????root?=?doc.documentElement();
????}
????QDomNode?nd2?=?findNode(root?node1?node2);
????if(nd2.isNull()){???//?檢查node節點是否存在
????????nd1?=?findNode(root?node1);?//?此處nd1必須重新查找1次?上一次nd1和這次nd1查找的節點,不是在同一個doc下
????????QDomElement?nd22?=?doc.createElement(node2);
????????nd1.appendChild(nd22);
????}
????if(!file.open(QIODevice::WriteOnly|QIODevice::Truncate))
????qDebug()?<“open?for?add?error!“;
????QTextStream?out(&file);
????doc.save(out4);
????file.close();
}
//?添加3級節點
void?ModelConfigurationxml::addNode(QString?filename?QString?node1?QString?node2?QString?node3)
{
????QFile?file(filename);
????if?(!file.open(QIODevice::ReadOnly))?{
????????qDebug()<<“addNode3?open?for?add?error...“?;
????}
????QDomDocument?doc;
????doc.setContent(&file?false);
????file.close();
????QDomElement?root?=?doc.documentElement();
????QDomNode?nd1?=?findNode(root?node1);
????if(nd1.isNull()){
????????addNode(filename?node1);
????????file.open(QIODevice::ReadOnly);
????????doc.setContent(&file?false);
?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2014-05-05?11:19??xm
?????文件???????17922??2014-05-05?11:14??xm
?????文件????????2439??2014-05-05?11:14??xm
- 上一篇:QUARTUS的fpga中生成正弦波實驗報告
- 下一篇:圖像壓縮編碼
評論
共有 條評論