2010年4月21日 星期三

Qt 讀寫 XML

首先在專案檔要加入
QT += xml
不然會出現錯誤

建立XML

//建立Document
QDomDocument doc( "Favorite" );
//建立root
QDomElement root = doc.createElement( "favorite" );
//將root加入doc
doc.appendChild( root );

到這邊已經建立好基本的XML了
接下來就是將資料放入XML

//建立節點
QDomElement app = doc.createElement( "application" );
//設定節點屬性的“名稱”和“內容”
app.setAttribute( "name", "Skype" );
//將節點放到root下成為一個子節點
root.appendChild( app );

這邊XML加入子節點和屬性的方法都有了剩下就是個人自己設計架構了
設計完了後要存檔

QFile file( "favor.xml" );
//開檔
if( !file.open( QFile::WriteOnly | QFile::Text ) )
{
//設定錯誤訊息
}
//設定QTextStream
QTextStream ts( &file );
//資料寫入
ts << doc.toString();
//既然有開檔當然就要關檔
file.close();

到這邊一個完整的XML就完成了
再來是要把檔案讀出來

QDomDocument doc;
QFile file(favor.xml);
QString errorStr;
int errorLine;
int errorCol;
if(!doc.setContent(&file,true,&errorStr,&errorLine,&errorCol))
{
//如果有錯在這邊處理
}
file.close();

這邊已經完成開檔動作
接著開始讀取內容

QDomNode root = doc.firstChild();
//檢查是否有子節點
if(root.hasChildNodes())
{
//取得所有子節點
QDomNodeList list=firstnode.childNodes();
//掃描所有子節點
for(int i = 0; i < list.count(); i++)
{
//取得第i個子節點
QDomNode node=list.at(i);
//節點名稱
qDebug() << node.nodeName();

QDomElement app = node.toElement();
//下面就是節點的屬性了
qDebug() << app.attribute("name");
}
}


以上就是XML基本會用到的東西

沒有留言: