DOM & SAX

     XML文檔進行解析和數據提取,目前有兩大主流技術:DOMDocument Object Model)和SAXSimple API for XML)。

 

()DOM

DOM可以看作一組API,它把HTML文檔、XML文檔等看成是一個文檔對象,在接口裏面存放的是對這些文檔操作的屬性和方法的定義。若編程語言實現了這些屬性和方法,就可以對文檔對象中的數據進行存取,並且利用程序對數據做進一步處理。DOM規範的核心是樹模型,對於要解析的XML文檔,首先利用DOM解析器加載到內存中,在內存中爲XML文件建立邏輯形式的樹。

根據 DOMXML 文檔中的每個成分都是一個節點。DOM 是這樣規定的:

& 整個文檔是一個文檔節點(document

& 每個 XML 標籤是一個元素節點(element)

& 包含在 XML 元素中的文本是文本節點(Text)

& 每一個 XML 屬性是一個屬性節點(attribute)

& 註釋屬於註釋節點(notation)

另外在 DOM 處理中一個普遍的錯誤是,認爲元素節點包含文本。其實元素節點的文本是存儲在文本節點中的。在這個例子中:<year>2005</year>,元素節點 <year>,擁有一個值爲 "2005" 的文本節點。"2005" 不是 <year> 元素的值。

利用DOM進行解析,掌握:樹型結構的思想,上述結點類型(nodetype),輔之以接口中的屬性方法,一切就easy了。下面使用DOMbook.xml進行遍歷解析:

 

(二)SAX

SAX不是W3C官方標準,但應用的絲毫不比DOM少。它有兩個主要特點:1)在處理DOM的時候需要將整個XML文檔加載到內存,不適合處理大文檔。而SAX是一種輕量型方法,可以解析任意大小的文件。2SAX以流的方式讀取XML文件到內存,是事件驅動的。文檔的讀入過程就是SAX的解析過程。

SAX的核心是事件處理機制。當用SAX把一個要解析的XML文件調入內存時,需要對該XML文件讀取,當讀到一個開始標記時,就會觸發一個事件,並調用與該事件相應的方法來處理這個事件。解析器遇到XML文件的開始標記、空白字符、結束標記、標記內容等都會觸發相應的事件。

同樣遍歷book.xml:

 

     SAX只是順序檢查XML文檔中的字節流,並觸發相應事件。而對於事件處理函數本身,則要應用程序自己實現。但是對於只需要訪問數據的應用來說,SAX效率是更高的。一般可以將DOMSAX優勢結合使用,用SAX獲取相應數據,用DOM根據新的需要形成一個XML文件。

 

   運行結果:

 

The Topic is :書庫

 

種類--歷史
標題:上下五千年
作者:王強
出版日期:2005
價格:30.00元

 

種類--小說
標題:中國,你好
作者:孫靜
出版日期:2005
價格:29.99元

 

種類--計算機
標題:如何成爲一個程序員
作者:姜俊傑
出版日期:2006
價格:49.99元

 

 

 

 

 

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