Android 創建與解析XML(六)—— 比較與使用
https://blog.csdn.net/sunboy_2050/article/details/7521668
幾種解析技術的比較與總結:
對於Android的移動設備而言,因為設備的資源比較寶貴,內存是有限的,所以我們需要選擇適合的技術來解析XML,這樣有利於提高訪問的速度。
1 DOM在處理XML文件時,將XML文件解析成樹狀結構並放入內存中進行處理。當XML文件較小時,我們可以選DOM,因為它簡單、直觀。
2 SAX則是以事件作為解析XML文件的模式,它將XML文件轉化成一係列的事件,由不同的事件處理器來決定如何處理。XML文件較大時,選擇SAX技術是比較合理的。雖然代碼量有些大,但是它不需要將所有的XML文件加載到內存中。這樣對於有限的Android內存更有效,而且Android提供了一種傳統的SAX使用方法以及一個便捷的SAX包裝器。 使用Android.util.Xml類,從示例中可以看出,會比使用 SAX來得簡單。
3 XML pull解析並未像SAX解析那樣監聽元素的結束,而是在開始處完成了大部分處理。這有利於提早讀取XML文件,可以極大的減少解析時間,這種優化對於連接速度較漫的移動設備而言尤為重要。對於XML文檔較大但隻需要文檔的一部分時,XML Pull解析器則是更為有效的方法。
Android係統中XML解析方案的選擇:
DOM解析器是通過將XML文檔解析成樹狀模型並將其放入內存來完成解析工作的,而後對文檔的操作都是在這個樹狀模型上完成的。這個在內存中的文檔樹將是文檔實際大小的幾倍。這樣做的好處是結構清除、操作方便,而帶來的麻煩就是極其耗費係統資源。而SAX正好克服了DOM的缺點,分析能夠立即開始,而不是等待所有的數據被處理。而且,由於應用程序隻是在讀取數據時檢查數據,因此不需要將數據存儲在內存中,這對於大型文檔來說是個巨大的優點。事實上,應用程序甚至不必解析整個文檔;它可以在某個條件得到滿足時停止解析。
選擇何種解析技術,這取決於下麵幾個因素:
⑴ 應用程序的目的:如果打算對數據作出更改並將它輸出為 XML,那麼在大多數情況下,DOM 是適當的選擇。並不是說使用 SAX和PULL 就不能更改數據,但是該過程要複雜得多,因為您必須對數據的一份拷貝而不是對數據本身作出更改。
⑵ 數據容量: 對於大型文件,SAX和PULL 是更好的選擇。
⑶ 數據將如何使用:如果隻有數據中的少量部分會被使用,那麼使用 SAX,PULL來將該部分數據提取到應用程序中可能更好。另一方麵,如果您知道自己以後會回頭引用已處理過的大量信息,那麼 SAX,PULL也許不是恰當的選擇。
⑷ 對速度的需要: SAX,PULL實現通常要比 DOM 實現更快。
⑸ 為了能動態給xml添加節點:使用DOM。
⑹ 在SAX和PULL都可以使用的情況下,建議使用PULL來解析。
最後更新:2017-04-02 17:51:23