QT開發(四十一)——XML文件解析基礎

QT開發(四十一)——XML文件解析基礎

一、XML文檔簡介

    XML(Extensible Markup Language,可擴展標記語言),是一種通用的文本格式,被廣泛運用於數據交換和數據存儲,而不是顯示數據。XML的標籤沒有被預定義,用戶需要在使用時自行進行定義。XML是W3C(萬維網聯盟)的推薦標準。相對於數據庫表格的二維表示,XML使用的樹形結構更能表現出數據的包含關係,作爲一種文本文件格式,XML簡單明瞭的特性使得它在信息存儲和描述領域非常流行。

<?xml version="1.0" encoding="UTF-8"?>

<library>

   <book id="01">

       <title>Qt</title>

       <author>shiming</author>

    </book>

   <book id="02">

       <title>Linux</title>

       <author>yafei</author>

   </book>

</library>

    每個XML文檔都由XML說明(或者稱爲XML序言)開始,它是對XML文檔處理的環境和要求的說明,比如這裏的<?xmlversion="1.0" encoding="UTF-8"?>,其中xml version=“1.0”,表明使用的XML版本號,這裏字母是區分大小寫的;encoding=“UTF-8”是使用的編碼,指出文檔是使用何種字符集建立的,默認值爲Unicode編碼。XML文檔內容由多個元素組成,一個元素由起始標籤<標籤名>和終止標籤</標籤名>以及兩個標籤之間的內容組成,而文檔中第一個元素被稱爲根元素,比如這裏的<library></library>XML文檔必須有且只有一個根元素。元素的名稱是區分大小寫的,元素還可以嵌套,比如這裏的librarybooktitleauthor等都是元素。元素可以包含屬性,用來描述元素的相關信息,屬性名和屬性值在元素的起始標籤中給出,格式爲<元素名 屬性名=“屬性值”>,如<book id=“01”>,屬性值必須在單引號或者雙引號中。在元素中可以包含子元素,也可以只包含文本內容,比如這裏的<title>Qt</title>中的Qt就是文本內容。

二、XML文件結構

1、XML文件頭

    XML文件頭由XML聲明與DTD文件類型聲明組成。其中DTD文件類型聲明是可以缺少的,而XML聲明是必須要有的,以使文件符合XML的標準規格。

XML聲明如下:

<?xml version="1.0" encoding="gb2312"?>

XML聲明必須在XML文檔的第一行

“<?”代表一條指令的開始,“?>”代表一條指令的結束;

“xml”代表此文件是XML文件;

“ version="1.0" ”代表此文件用的是XML1.0標準;

“ encoding="gb2312" ” 代表此文件所用的字符集,默認值爲Unicode,如果文件中要用到中文,就必須將此值設定爲gb2312。

2、XML文件體

    文件體中包含的是XML文件的內容,XML元素是XML文件內容的基本單元。

    一個元素包含一個起始標記、一個結束標記以及標記之間的數據內容。

XML元素格式如下:

<標記名稱 屬性名1="屬性值1" 屬性名1="屬性值1" ……>內容</標記名稱>

    所有的數據內容都必須在某個標記的開始和結束標記內,而每個標記又必須包含在另一個標記的開始與結束標記內,形成嵌套式的分佈,只有最外層的標記不必被其他的標記所包含。最外層的是根元素(Root),又稱文件(Document)元素,所有的元素都包含在根元素內。

三、XML基本語法

1、註釋

    XML的註釋與HTML的註釋相同,以“<!--”開始,以“-->”結束。

2、區分大小寫

    在HTML中是不區分大小寫的,而XML區分大小寫,包括標記,屬性,指令等。

3、標記

    XML標記與HTML標記相同,“<”表示一個標記的開始,“>” 表示一個標記的結束。XML中只要有起始標記,就必須有結束標記,而且在使用嵌套結構時,標記之間不能交叉。

    在XML中不含任何內容的標記叫做空標記,格式爲:<標記名稱/>

4、屬性

    XML屬性的使用與HTML屬性基本相同,但需要注意的是屬性值要加雙引號。

5、實體引用

    實體引用是指分析文檔時會被字符數據取代的元素,實體引用用於XML文檔中的特殊字符,否則這些字符會被解釋爲元素的組成部分。例如,如果要顯示“<”,需要使用實體引用“<”否則會被解釋爲一個標記的起始。

6、CDATA

    在XML中由一個特殊的標記CDATA,在CDATA中所有文本都不會被XML處理器解釋,直接顯示在瀏覽器中,使用方法如下:

<![CDATA[這裏的內容可以直接顯示]]>

 

7、處理指令

    處理指令使用來給處理XML文件的應用程序提供信息的,處理指令的格式如下:

<?處理指令名稱 處理指令信息?>

XML聲明就是一條處理指令:

<?xml version="1.0" encoding="gb2312"?>

其中,“xml”是處理指令名稱,version="1.0" encoding="gb2312"是處理指令信息。

四、QtXml模塊簡介

    QT中提供了QtXml模塊來進行XML文檔的處理QtXml模塊提供三種對XML文檔的解析方法:

A、DOM方法,可以進行讀寫;

B、SAX方法,可以進行讀取;

C、基於流的方法,分別使用QXmlStreamReaderQXmlStreamWriter進行讀取和寫入。  
   使用XML模塊,在.pro文件中添加QT += xml,並加如相應的頭文件#include <QDomDocument>或者#include <QXmlStreamReader>。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章