成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Qt使用QDomDocument操作XML文件

移動開發
QDomNode類是一個父類,QDomDocument是QDomNode的一個子類,鑒于大部分QDomNode的類型都是QDomDocument。.那么你可以使用toDocument()函數將QDomNode類型轉換成QDomDocument。

本文介紹的是在Qt使用QDomDocument類實現XML文件的操作,QDomNode類是一個父類,QDomDocument是QDomNode的一個子類,鑒于大部分QDomNode的類型都是QDomDocument。

XML,全稱為擴展標記語言(extensible markup language).是一種非常方便的數據交換工具。現在Blog的訂閱系統輸出格式就是滿足XML規范的RSS格式,還有SVG矢量圖形也使用了XML格式。

我們在取得一個XML格式的文件后,需要作句法分析去提取發布方提供的信息。而QtXML提供了很好的支持,包括DOM的實現和SAX的實現。

DOM是Document Object Model的簡稱,其實現方式是將整個文檔當作一個對象來裝入內存進行處理,然后開發者可以訪問這個對象中的每一個節點,每一個節點對應XML文件里的一個標記。這種方式的優點是操作非常簡單,缺點是需要將整個文件放入內存,不適合處理過大文件。這種方式在Qt中的實現類是QDomDocument,也是本文將要講解的。以Blog為代表的RSS文件都不會很大,適合用這種方式來處理。

SAX是Simple API for XML的簡稱,其實現方式是按階段將文檔讀取到內存中,在碰到標簽或者其它階段的時候,調用開發者預先設計好的回調函數去處理。這種方式的缺點是需要開發者寫回調函數去處理不同標簽,代碼復雜一些,優點是能處理很大的XML文件。這種方式在Qt中的實現類叫QXmlStreamReader。

下面部分是代碼講解

(1)如果需要使用QDomDocument,那么請在你的項目.pro文件里加上一句”QT += xml”,不然無法編譯通過。

(2)

  1. QDomDocument doc;  
  2. QFile file(”rss.xml”);  
  3. QString errorStr;  
  4. int errorLine;  
  5. int errorCol;  
  6. //setContent是將指定的內容指定給QDomDocument解析,***參數可以是QByteArray或者是文件名等  
  7. if(!doc.setContent(&file,true,&errorStr,&errorLine,&errorCol))  
  8. {  
  9. //如果出錯,則會進入這里。errorStr得到的是出錯說明  
  10. //errorLine和errorCol則是出錯的行和列  

如果上面的步驟沒出錯,那么恭喜你,你已經得到了一個完整的QDomDocument對象doc,你只要訪問doc的子節點或子子節點就可以取得XML中所有標記上的內容了。

(3)

可以通過doc.childNodes()獲得doc的所有的子節點列表QDomNodeList。比如

  1. QDomNodeList list=doc.childNodes();  
  2. for(int i=0;i<list.count();i++){  
  3. QDomNode node=list.at(i);//好的風格當然是把定義寫在外面:(  
  4. //qDebug()<<”node name is “<<node.nodeName();  
  5. //qDebug()<<”node type is “<<.nodeType();  

通過上面的方法你就能知道每個節點的名字和類型了,節點名字就是標記的名字。打印出來對照著xml文件看就很容易明白了。QDomNode類是一個父類,QDomDocument是QDomNode的一個子類,鑒于大部分QDomNode的類型都是QDomDocument.那么你可以使用toDocument()函數將QDomNode類型轉換成QDomDocument.

  1. QString text=node.toElement().text(); 

上面的語句可以將一個節點里的文本取出,也就是標記內的文本部分。使用該函數獲得的編碼就已經是unicode格式了,不需要再做轉換。

小結:對于Qt使用QDomDocument操作XML文件的內容講解完了,希望本篇文章對你有所幫助吧。

【編輯推薦】

初識Qt Object 類

新手須知 QT類大全

剖析Qt Quick之QML程序

詳談XML的應用分類及前景

從新手到老手之Qt學習歷程

基于Qt Web瀏覽器設計與實現

責任編輯:zhaolei 來源: 互聯網
相關推薦

2011-12-28 10:57:37

2011-07-22 08:43:08

XML

2009-09-09 18:20:29

C# XML編程

2022-03-22 09:41:31

Java編程語言持久化

2009-04-23 13:19:21

創建XMLXML文件Javascript

2009-08-18 17:05:08

C#操作xml文件

2011-06-20 14:18:27

Qt 資源 文件

2013-06-08 13:29:27

Android開發DOM讀取XMLXML解析

2009-12-02 14:14:06

PHP DOM-XML

2011-06-23 11:16:39

Qt Excel

2011-07-05 17:38:52

QT Sqlite

2009-06-10 21:51:42

JavaScript XMLFirefox

2021-09-30 07:26:15

YamlJsonXml

2011-07-20 14:46:59

Cocoa XML 文件

2011-06-09 18:05:00

QT MySql

2009-09-16 16:59:05

LINQ to XML

2011-07-05 14:46:34

2009-08-18 17:11:03

C#操作XML文件

2009-08-18 16:42:49

C# 操作XML

2009-01-04 16:58:48

LINQ to XMLLINQXML
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久视频在线 | 九九久久久 | 亚洲精品免费看 | 日日夜夜精品视频 | 日韩欧美电影在线 | 久久综合九九 | 1级黄色大片 | 欧美极品在线 | 日韩在线综合网 | www.久| 国产精品一区二区精品 | 国产精品影视在线观看 | 欧美极品在线观看 | 午夜视频免费网站 | 日韩成人在线观看 | 日本久久久一区二区三区 | 97视频在线免费 | 欧美多人在线 | 亚洲天堂影院 | 久久视频精品 | 亚洲精品1区2区3区 91免费看片 | 成人国产精品色哟哟 | 国产精品欧美一区二区三区 | 久久综合香蕉 | 日本电影一区二区 | 亚洲一区二区在线视频 | 中文成人无字幕乱码精品 | 国产精品亚洲欧美日韩一区在线 | 日韩视频在线观看 | 作爱视频免费观看 | 欧美激情亚洲 | 日韩视频在线免费观看 | 狠狠躁18三区二区一区 | 欧美在线播放一区 | 精品国产精品国产偷麻豆 | 精品国偷自产在线 | 麻豆毛片 | 欧美激情视频一区二区三区在线播放 | 黑人巨大精品欧美黑白配亚洲 | 日本精品一区二区三区视频 | 国户精品久久久久久久久久久不卡 |