XML在各種開發中都廣泛應用,Android也不例外。作為承載資料的一個重要角色,如何讀寫XML成為Android開發中重要的技能。今天就由我向大家介紹一下在Android平台下幾種常見的XML解析和創建的方法。
在Android中,常見的XML解析器分別為SAX解析器、DOM解析器和PULL解析器,下面,我要為大家做詳細的介紹。
SAX解析器:
SAX(Simple API for XML)解析器是一種基於事件的解析器,它的核心是事件處理模式,主要是圍繞著事件來源以及事件處理器來運作的。當事件來源產生事件後,呼叫事件處理器對應的處理方法,一個事件就可以處理。在事件源呼叫事件處理器中特定方法的時候,也要傳遞給事件處理器對應事件的狀態訊息,這樣事件處理器才能夠根據提供的事件資訊來決定自己的行為。
SAX解析器的優點是解析速度快,佔用記憶體少。非常適合在Android行動裝置中使用。
DOM解析器:
DOM是基於樹狀結構的節點或資訊片段的集合,允許開發人員使用DOM API遍歷XML樹、檢索所需資料。分析該結構通常需要載入整個文件和建構樹形結構,然後才可以檢索和更新節點資訊。
由於DOM在記憶體中以樹狀結構存放,因此檢索和更新效率會更高。但是對於特別大的文檔,解析和載入整個文檔將會很耗資源。
PULL解析器:
PULL解析器的運作方式和SAX類似,都是基於事件的模式。不同的是,在PULL解析過程中,我們需要自己取得產生的事件然後做對應的操作,而不是像SAX那樣由處理器觸發一種事件的方法,執行我們的程式碼。 PULL解析器小巧輕便,解析速度快,簡單好用,非常適合在Android行動裝置中使用,Android系統內部在解析各種XML時也是用PULL解析器。
在Android中,首推當然就是pull解析器了。 PULL解析器小巧輕便,解析速度快,簡單易用,非常適合在Android行動裝置中使用,Android系統內部在解析各種XML時也是用PULL解析器,Android官方推薦開發者使用Pull解析技術。 Pull解析技術是第三方開發的開源技術,它同樣可以應用於JavaSE開發。
PULL 的工作原理:
XML pull提供了開始元素和結束元素。當某個元素開始時,可以呼叫parser. nextText從XML文件中擷取所有字元資料。當解析到一個文件結束時,自動產生EndDocument事件。
常用的XML pull的介面和類別:
XmlPullParser:此解析器是一個在org.xmlpull.v1中定義的解析功能的介面。
XmlSerializer:它是一個接口,定義了XML資訊集的序列。
XmlPullParserFactory:這個類別用於在XMPULL V1 API中建立XML Pull解析器。
XmlPullParserException:拋出單一的XML pull解析器相關的錯誤。
PULL解析器的運作方式和SAX類似,都是基於事件的模式。
不同的是,在PULL解析過程中傳回的是數字,而我們需要自己取得產生的事件然後做對應的操作,而不是像SAX那樣由處理器觸發一種事件的方法,執行我們的程式碼:
讀取到xml的宣告回傳 START_DOCUMENT; 結束回傳 END_DOCUMENT ; 開始標籤返回 START_TAG;
結束標籤返回 END_TAG; 文字返回 TEXT。
最後對這3個解析技術做個比較與總結:
對Android的行動裝置而言,因為裝置的資源比較寶貴,記憶體是有限的,所以我們需要選擇適合的技術來解析XML,這樣有利於提高存取的速度。
DOM在處理XML檔案時,將XML檔案解析成樹狀結構並放入記憶體中處理。當XML檔案較小時,我們可以選DOM,因為它簡單、直覺。
SAX則是以事件作為解析XML檔案的模式,它將XML檔案轉換成一系列的事件,由不同的事件處理器決定如何處理。 XML檔案較大時,選擇SAX技術是比較合理的。雖然程式碼量有些大,但是它不需要將所有的XML檔案載入到記憶體中。這樣對於有限的Android記憶體更有效,而且Android提供了一個傳統的SAX使用方法以及一個方便的SAX包裝器。 使用Xml類,會比使用 SAX來得簡單。
XML pull解析並未像SAX解析那樣監聽元素的結束,而是在開始處完成了大部分處理。這有利於提早讀取XML文件,可以極大的減少解析時間,這種優化對於連接速度較漫的行動裝置而言尤其重要。對於XML文件較大但只需要文件的一部分時,XML Pull解析器則是更有效的方法。
以上就是效率最高的xml解析方式 的內容,更多相關內容請關注PHP中文網(www.php.cn)!