http://www.qter.org/portal.php?mod=view&aid=62php
一、新建QT控制檯應用,在.pro中添加linux
QT += core xml
二、xml文件:函數
<?xml version="1.0" encoding="UTF-8"?> <書庫> <圖書 編號="1"> <書名>Qt</書名> <做者>shiming</做者> </圖書> <圖書 編號="2"> <書名>linux</書名> <做者>yafei</做者> </圖書> </書庫>
三、代碼spa
#include <QCoreApplication> #include <QtXml> #include <QDebug> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QFile file("my.xml");//創建指向my.xml文件的QFile對象. if(!file.open(QFile::ReadOnly | QFile::Text)) //以文本方式,只讀打開文件 { qDebug() << "打開失敗"; return -1; } QXmlStreamReader reader; reader.setDevice(&file); //設置文件,這時會將流設置爲初始狀態 while(!reader.atEnd()){ //若是沒有讀到文檔結尾,並且沒有出現錯誤 QXmlStreamReader::TokenType type = reader.readNext(); //讀取下一個記號,它返回記號的類型 //流讀取器就是在一個循環中經過使用readNext()來不斷讀取記號,這裏能夠對不一樣的記號和不一樣的內容進行不一樣的處理,‘ //便可以在本函數中進行,也能夠在其餘函數或者其餘類中進行。 //根據記號的類型來進行不一樣的輸出 if(type == QXmlStreamReader::StartDocument){ //type == 2 qDebug() << reader.documentEncoding() << reader.documentVersion(); } if(type == QXmlStreamReader::StartElement){ //type == 4 qDebug() << type << "<" << reader.name() << ">"; if(reader.attributes().hasAttribute("編號")){ qDebug() << reader.attributes().value("編號"); } } if(type == QXmlStreamReader::Characters && !reader.isWhitespace()){ qDebug() << reader.text(); } if(type == QXmlStreamReader::EndElement){ //type == 5 qDebug() << ""; } } // 若是讀取過程當中出現錯誤,那麼輸出錯誤信息 if (reader.hasError()) { qDebug() << "error: " << reader.errorString(); } file.close(); return a.exec(); }