Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 初級開發 >> 初識Android之xml解析

初識Android之xml解析

編輯:初級開發

android 作為一個開源移動開發平台,為用戶提供了眾多豐富有趣的功能,XML作為Internet 上的一種數據格式為其實現提供了一些特殊的支持。今天花了一些時間學習了下XML的解析,現在總結如下:

讀取XML主要有2種方法:DOM和SAX,DOM(文檔對象模型),為XML文檔的解析定義了一組接口,解析器讀入整個文檔,構造一個駐留內存的樹結構,然後代碼就可以使用DOM接口來操組整個樹結構,其優點是:整個文檔樹都在內存當中,便於操作;支持刪除、修改、重新排列等多功能。缺點是:將整個文檔調入內存(經常包含大量無用的節點),浪費時間和空間。這種方式的使用場合是:一旦解析了文檔還需要多次訪問這些數據,而且資源比較充足(如內存、CPU等)的情況。

為了解決DOM解析XML引起的這些問題,出現了SAX。SAX全稱Simple API for XML,即指一種接口,也是指一個軟件包。作為接口,SAX是事件驅動型XML解析的一個標准接口。SAX的工作原理簡單地說就是對文檔進行順序掃描,當掃描到文檔(documnet)開始與結束、元素(element)開始與結束、文檔(document)結束等地方時通知事件處理函數,由事件處理函數做相應動作,然後繼續做同樣的掃描,直到文檔結束。大多數SAX實現都會產生以下類型的事件:     在文檔內每一XML元素接受解析的前後觸發元素事件。     在處理文檔的DTD或Schema時產生DTD或Schema事件。
    產生錯誤事件用來通知主機應用程序解析錯誤。

在SAX接口中,事件源是org.xml.sax包中的XMLReader,它通過parser()方法來開始解析XML文檔,並根據文檔的內容產生事件。而事件處理器則是org.xml.sax包中的ContentHander、DTDHander、ErrorHandler,以及EntityResolver這4個接口,它們分別處理事件源在解析XML文檔過程中產生的不同種類的事件。而事件源XMLReader與這4個事件處理器的連接是通過在XMLReader中的相應事件處理器注冊方法setXXXX()來完成的。

ContentHandler是Java類包中一個特殊的SAX接口,位於org.xml.sax包中。該接口封裝了一些對事件處理的方法,當XML解析器開始解析XML輸入文檔時,其會遇到某些特殊的事件,比如文檔的開頭和結束,元素開頭和結束,以及元素中的字符數據等事件。當遇到這些事件時,XML解析器會調用ContentHandler接口中相應的方法來響應該事件。主要方法有:void characters(char[] ch, int start, int length) ;void startDocument()
void startElement(String uri, String localName, String qName, Attributes atts)
void endDocument() ;void endElement(String uri, String localName, String qName) 。

ErrorHandler處理文檔中產生的錯誤。主要方法有:void error(SAXParseException exception) ;
void fatalError(SAXParseException exception) ;void warning(SAXParseException exception) 。

DTDHandler處理對文檔的DTD(Document Type Definition是一套關於標記符的語法規則)進行解析時產生的相應事件。主要方法有:void notationDecl(String name, String publicId, String systemId) ;
void unparsedEntityDecl(String name, String publicId, String systemId, String notationName) 。
   EntityResolver處理外部實體。主要方法有:abstract InputSource resolveEntity(String publicId, String systemId) 。

SAX的主要優點是:不用事先調入整個文檔,占用資源少。尤其在嵌入式環境中,極力推薦采用SAX進行解析XML文檔。主要缺點是:不像DOM一樣將文檔長期駐留在內存,數據不是持久的,事件過後,如沒有保存數據,那麼數據就會丟失。使用場合:機器性能有限,尤其是在嵌入式環境,如android,極力推薦采用SAX進行解析XML文檔。
    由於使用DOM方法需要將整個XML文檔加載內存中,對系統資源占用比較多,這對內存比較緊張的android系統來說,使用DOM方法讀取XML文檔會有很大的限制。通常使用SAX方法來讀取XML,這樣對內存資源的占用相對比較少,因此在嵌入式設備中極力推薦使用,android也不例外。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved