DOM & SAX for XML files

There are two ways (DOM & SAX) to read XML files.

SAX:

SAX 在讀取 XML 流的同時處理它們.

<a>

<b></b>

<c></c>

</a>

SAX 首先讀取<a>中內容,然後讀取<b>中內容.當讀取了<b></b>內容後,可對直接處理其內容,不必將整個XML文件讀取.

這種處理的優點非常類似於流媒體的優點。分析能夠立即開始,而不是等待所有的數據被處理。而且,由於應用程序只是在讀取數據時檢查數據,因此不需要將數據存儲在內存中。這對於大型文檔來說是個巨大的優點。事實上,應用程序甚至不必解析整個文檔;它可以在某個條件得到滿足時停止解析。一般來說,SAX 還比它的替代者 DOM 快許多。
另一方面,由於應用程序沒有以任何方式存儲數據,使用 SAX 來更改數據或在數據流中往後移是不可能的。


DOM:

DOM 是處理 XML 數據的傳統方法。使用 DOM 時,數據以樹狀結構的形式被加載到內存中。

DOM會讀取整個XML文件.

DOM 以及廣義的基於樹的處理具有幾個優點。首先,由於樹在內存中是持久的,因此可以修改它以便應用程序能對數據和結構作出更改。它還可以在任何時候在樹中上下導航,而不是像 SAX 那樣是一次性的處理。DOM 使用起來也要簡單得多。
另一方面,在內存中構造這樣的樹涉及大量的開銷。大型文件完全佔用系統內存容量的情況並不鮮見。此外,創建一棵 DOM 樹可能是一個緩慢的過程。


選擇 DOM 還是選擇 SAX,這取決於下面幾個因素:

1.應用程序的目的:如果打算對數據作出更改並將它輸出爲 XML,那麼在大多數情況下,DOM 是適當的選擇。並不是說使用 SAX 就不能更改數據,但是該過程要複雜得多,因爲您必須對數據的一份拷貝而不是對數據本身作出更改。 
2.
數據容量: 對於大型文件,SAX 是更好的選擇。
3.
對速度的需要: SAX 實現通常要比 DOM 實現更快。

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