1. 程式人生 > >Qt XML 使用QxmlStreamReader的使用的步驟和方法

Qt XML 使用QxmlStreamReader的使用的步驟和方法

前文我們介紹過通過QDomDocument的方法可以容易解析一個XML檔案,QDomDocument的每一個子物件和XML的每一個子節點對應,保留了相同的層次結構,能夠做到隨機訪問XML中的節點。但它的缺點是需要將整個XML檔案載入到記憶體中,不適合處理較大的檔案。

今天要介紹的是QXmlStreamReader,就是按順序讀取XML的方式,每讀取一個節點,應用就對當前節點做相應的處理(忽略或儲存)。那麼這種方式是SAX麼?不是!
SAX的處理方式雖然也是按節點順序讀取,但是對讀取節點的處理方法不一樣。SAX在碰到一個節點後,會去呼叫使用者已經寫好的回撥函式,該回調函式是基類實現的虛擬函式,不能改變它的名字,只能根據傳入的引數實現不同處理,程式碼會比較複雜。但StreamReader的實現方式是由開發者通過readNext()讀入一個節點,然後判斷節點內容,由開發者決定用什麼函式去處理,對應不同節點層次實現不同函式,可維護性比較好。

具體流程是:
1. 建立一個QXmlStreamReader的類物件
2. 通過setDevice()設定好要處理的XML檔案
3. 通過readNext()挨個讀入節點,
4.a 通過isStartElement()和isEndElement()判斷是節點的開始和結束
4.b 可以通過name()得到當前節點名字
4.c 可以通過readElementText()訪問當前節點的內容