Qt DOM读写XML文件
生活随笔
收集整理的這篇文章主要介紹了
Qt DOM读写XML文件
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
QXmlStreamReader:一種快速的基于流的方式訪問良格式 XML 文檔,特別適合于實現一次解析器(所謂“一次解析器”,可以理解成我們只需讀取文檔一次,然后像一個遍歷器從頭到尾一次性處理 XML 文檔,期間不會有反復的情況,也就是不會讀完第一個標簽,然后讀第二個,讀完第二個又返回去讀第一個,這是不允許的);
DOM(Document Object Model):將整個 XML 文檔讀入內存,構建成一個樹結構,允許程序在樹結構上向前向后移動導航,這是與另外兩種方式最大的區別,也就是允許實現多次解析器(對應于前面所說的一次解析器)。DOM 方式帶來的問題是需要一次性將整個 XML 文檔讀入內存,因此會占用很大內存;
SAX(Simple API for XML):提供大量虛函數,以事件的形式處理 XML 文檔。這種解析辦法主要是由于歷史原因提出的,為了解決 DOM 的內存占用提出的(在現代計算機上,這個一般已經不是問題了)。
XML文件如下:
<?xml version='1.0' encoding='UTF-8'?> <china><beijing><haidian><university><peking><cs><name>奧巴馬</name></cs></peking></university></haidian></beijing> </china>?Qt解析代碼如下:
QDomDocument doc;QDomElement root;QString filename = "D:\\Qt Projects\\TestXML_1\\demo.xml";QFile file(filename);if(!file.open(QIODevice::ReadOnly | QIODevice::Text)){QMessageBox::critical(this, "文件打開失敗", QString("不能打開文件:%1").arg(filename));return;}QString error;int errrow, errcol;if(!doc.setContent(&file, false, &error, &errrow, &errcol)){QMessageBox::critical(this, "文件解析失敗",QString("解析錯誤行:%1, 列:%2:%3").arg(errrow).arg(errcol).arg(error));file.close();return;}root = doc.documentElement();file.close();QString path = "china/beijing/haidian/university/peking/cs/name";QStringList strlist = path.split("/");QDomElement element = root;for(int i=1; i<strlist.count(); i++){element = element.firstChildElement(strlist.at(i));}qDebug() << element.nodeName() << "\t" << element.text();運行結果:
22:58:14: Starting D:\Qt Projects\build-TestXML_1-Desktop_Qt_6_0_3_MinGW_64_bit-Debug\debug\TestXML_1.exe ... "name" "奧巴馬" 22:58:17: D:\Qt Projects\build-TestXML_1-Desktop_Qt_6_0_3_MinGW_64_bit-Debug\debug\TestXML_1.exe exited with code 0總結
以上是生活随笔為你收集整理的Qt DOM读写XML文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++编程语言之Lambda函数与表达式
- 下一篇: 设计模式空间