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.自定義模型 |