閱讀941 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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

  上一篇:go Android中數據文件解析(Json解析)
  下一篇:go Android開發技巧:在TextView控件中單擊鏈接彈出Activity