SAX、DOM、PULL的比較

SAX、DOM、PULL的比較

SAX、DOM、PULL各有自己的特點,具體操作XML的時候該如何選擇呢?

1.內存佔用

這是一個根本性問題。由於Android手機性能相對於現在的應用操作還是有限的,程序對內存的佔用直接影響到了解析XML的速度。在這點上,SAX、Pull以它們比DOM佔用更少的內存的解析方式,更適合於Android手機開發。

2.編程方式

SAX採用事件驅動,在相應事件觸發的時候,會調用用戶編寫好的方法。也就是說,每解析一類XML,就要編寫一個新的適合該類XML的處理類。這顯然不是一個好的解決辦法,儘管其在解析速度上是那麼優秀。而這點,DOM因爲是W3C的規範。所以被更多程序員所知道和使用。所以在開發過程中,沒有太大困難。Pull雖然屬於一個小衆的,甚至是不爲人知的解析器,但是通過上面對其介紹和示例,我們應該能看出它的簡潔性。

3.訪問與修改

由於採用的是流式解析,這就說明它們不能像DOM那樣隨機訪問,XML的其中任意一個節點。並且,SAX並沒有提供對文檔中加節點的API,更沒有刪除,修改文檔內容的方法。

4.訪問方式

這是產生它們解析快慢的根本原因。如果把SAX和Pull比喻成一目十行,很快但是是走馬觀花的閱讀方式的話,那麼DOM就是逐字逐句的閱讀,很慢,但是是過目不忘。這裏還要需要注意的是,SAX,Pull解析的方式是同步的,即解析器讀到哪裏,就對哪裏進行處理。而DOM是已經將文件解析好後,供用戶提取XML中感興趣的信息。

總結:

出於對內存佔用的考慮,推薦使用SAX或者Pull來工作。可是根據它們工作的原理:如果只是需要XML最後的幾個節點的相關信息,或者出現反覆檢索XML文件的情況。那麼基本上三者在性能上就沒有什麼差異,反而在這時,SAX的處理類會使程序顯得比其他的實現方式顯得臃腫。所以,想做一個高性能的Android軟件,還是要多分析,選擇合適的工具,才能發揮它的作用。


FROM:http://book.51cto.com/art/201211/367725.htm

具體DEMO可以參考:http://blog.csdn.net/geniusxiaoyu/article/details/7282265

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