日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

Qt 读取XML文档的简单示例

發(fā)布時(shí)間:2025/3/15 asp.net 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt 读取XML文档的简单示例 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄名字

  • XML簡介
  • Qt 操作XML文檔一般方法
    • 使用DOM讀取XML文檔
    • 示例代碼:讀取XML文檔

XML簡介

XML(Extensible Markup Language,可擴(kuò)展標(biāo)記語言)是一種類似于HTML的標(biāo)記語言,設(shè)計(jì)的目的是傳輸數(shù)據(jù),而不是顯示數(shù)據(jù)。

XML的標(biāo)簽沒有被預(yù)定義,用戶需要在使用時(shí)自定義。

XML使用的樹形結(jié)構(gòu)更能表現(xiàn)出數(shù)據(jù)的包含關(guān)系。

XML是一種文本文件格式,在信息存儲(chǔ)和描述領(lǐng)域非常流行。

Qt 操作XML文檔一般方法

Qt提供了QtXML模塊來進(jìn)行XML文檔的處理,這里提供了3種解析方法:

  • DOM方法,可以進(jìn)行讀和寫

  • SAX方法,可以進(jìn)行讀取

  • 基于流的方法,QXmlStreamReader和QXmlStreamWriter進(jìn)行讀取和寫入。

Qt提供了更高級(jí)的QtXmlPatterns來進(jìn)行XML數(shù)據(jù)的查詢和操作。支持XQuery1.0和XPath2.0

使用DOM讀取XML文檔

DOM(Document Object Model,文檔對(duì)象模型),提供了一個(gè)接口來訪問和改變一個(gè)XML文件的內(nèi)容和結(jié)構(gòu),可以將XML文檔表示為一個(gè)存儲(chǔ)在內(nèi)存中具有層次的樹形圖。

文檔本身由QDOMDocument對(duì)象來表示,文檔中所有的DOM節(jié)點(diǎn)都是QDomNode類的子類。

Qt中使用QDomProcessingInstruction 類來表示XML說明。

XML文檔內(nèi)容有多個(gè)元素組成。元素對(duì)應(yīng)QDomElement類。

元素可以包含屬性。屬性對(duì)應(yīng)QDomAttr類。

元素可以包含子元素,也可以只包含文本內(nèi)容,文本內(nèi)容由QDomText類表示。

所有的DOM節(jié)點(diǎn),比如說明、元素、屬性、文本等都使用QDomNode來表示,然后使用對(duì)應(yīng)的isProcessingInstruction()、isElement()、isAttr()和isText()等函數(shù)來判斷是否是該類型的元素。如果是,就可以使用toProcessingInstruction()、toElement()、toAttribute()、toText()等函數(shù)轉(zhuǎn)化為具體的節(jié)點(diǎn)類型。

讀取XML文檔的一般步驟

1、打開 XML文件

2、新建QDomDocument 對(duì)象,將此對(duì)象命名,如命名為 doc

3、將文件內(nèi)容讀取到doc 中

4、關(guān)閉文件

5、對(duì)doc 進(jìn)行操作

示例代碼:讀取XML文檔

1.pro 添加QT += XML2、#include<QXml>

代碼示例:

#include <QtCore/QCoreApplication> #include <QtXml>int main(int argc, char *argv[]) {QCoreApplication a(argc, argv);// 新建QDomDocument類對(duì)象,它代表一個(gè)XML文檔QDomDocument doc;QFile file("../myDOM1/my.xml");if (!file.open(QIODevice::ReadOnly)) return 0;// 將文件內(nèi)容讀到doc中if (!doc.setContent(&file)) {file.close();return 0;}// 關(guān)閉文件file.close();// 獲得doc的第一個(gè)結(jié)點(diǎn),即XML說明QDomNode firstNode = doc.firstChild();// 輸出XML說明,nodeName()為“xml”,nodeValue()為版本和編碼信息qDebug() << qPrintable(firstNode.nodeName())<< qPrintable(firstNode.nodeValue());// 返回根元素QDomElement docElem = doc.documentElement();// 返回根節(jié)點(diǎn)的第一個(gè)子結(jié)點(diǎn)QDomNode n = docElem.firstChild();// 如果結(jié)點(diǎn)不為空,則轉(zhuǎn)到下一個(gè)節(jié)點(diǎn)while(!n.isNull()){// 如果結(jié)點(diǎn)是元素if (n.isElement()){// 將其轉(zhuǎn)換為元素QDomElement e = n.toElement();// 返回元素標(biāo)記和id屬性的值qDebug() << qPrintable(e.tagName())<< qPrintable(e.attribute("id"));// 獲得元素e的所有子結(jié)點(diǎn)的列表QDomNodeList list = e.childNodes();// 遍歷該列表for(int i=0; i<list.count(); i++){QDomNode node = list.at(i);if(node.isElement())qDebug() << " "<< qPrintable(node.toElement().tagName())<<qPrintable(node.toElement().text());}}// 轉(zhuǎn)到下一個(gè)兄弟結(jié)點(diǎn)n = n.nextSibling();}return a.exec(); }

總結(jié)

以上是生活随笔為你收集整理的Qt 读取XML文档的简单示例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。