天天看點

Java 解析 XML :DOM 和SAXJAVA 解析 XML :DOM 和SAX兩種方式差別表

JAVA 解析 XML :DOM 和SAX

兩種方式

通常有兩種方式:DOM 和SAX。

DOM(文檔對象模型)

DOM是W3C标準,提供了标準的解析方式,但其解析效率一直不盡如人意,這是因為DOM解析XML文檔時,把所有内容一次性的裝載入記憶體,并建構一個駐留在記憶體中的樹狀結構(節點樹)。如果需要解析的XML文檔過大,或者我們隻對該文檔中的一部分感興趣,這樣就會引起性能問題。

SAX(XML解析的替代方法)

SAX(simple API for XML)是一種XML解析的替代方法。相比于DOM,SAX是一種速度更快,更有效的方法。它逐行掃描文檔,一邊掃描一邊解析。而且相比于DOM,SAX可以在解析文檔的任意時刻停止解析,但任何事物都有其相反的一面,對于SAX來說就是操作複雜。

  • 優點:不用事先調入整個文檔,占用資源少。尤其在嵌入式環境,如Android,極力推薦采用SAX進行解析。
  • 缺點:不像DOM一樣将文檔樹長期留駐在記憶體,資料不是長久的。事件過後,若沒儲存資料,那麼資料就會丢失。
  • 使用場合:機器有性能限制,尤其是在嵌入式環境。

差別表

DOM SAX
速度 效率不高,占用資源較多 速度更快,更高效 ,占用資源少
方式 所有内容一次性裝入 逐行掃描,一邊掃描一邊解析,可随時停止
資料存儲 長久駐留,建構節點數 沒有儲存就會丢失
資料處理 任意存取, 沒有次數限制,可讀可改 隻讀一次, 不能随意讀取,隻讀一次不能修改
複雜度 簡單易于開發 複雜,開發比較困難
适合場合 1.XML文檔較小2.需要對檔案進行修改,對檔案進行存取 1.大型文檔2.機器有性能限制,尤其是在嵌入式環境 3.隻需讀4.自定義模型