標籤:
一、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軟體,還是要多分析,選擇合適的工具,才能發揮它的作用。
此部分主要參考網址:http://book.51cto.com/art/201211/367725.htm
二、對android解析xml的這三種方式總結
參考網址:http://www.cnblogs.com/JerryWang1991/archive/2012/02/24/2365507.html
(五十七)android解析XML總結(SAX、Pull、Dom三種方式)