亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Android中XML解析模塊的使用方法

系統 2387 0

在音樂跟電視的項目中,很多都是使用了典型的按照接口規范的流程處理方式。

Android中XML解析模塊的使用方法

例如上圖,客戶端發送一個request請求,服務端就會以xml的數據格式返回一個response響應。但是在客戶端界面展示xml數據并不是那么人性化與現實,所以在此之前,會對xml進行數據解析??v觀軟終端的大部分項目中,在客戶端進行數據解析采用的是SAX(Simple API for XML),這是有道理的。

SAX的工作原理簡單地說就是對文檔進行順序掃描,當掃描到文檔(document)開始與結束、元素(element)開始與結束、文檔(document)結束等地方時通知事件處理函數,由事件處理函數做相應動作,然后繼續同樣的掃描,直至文檔結束。

大多數SAX實現都會產生以下類型的事件
  在文檔內每一XML元素接受解析的前后觸發元素事件。
  在文檔的開始和結束時觸發文檔處理事件。
  在處理文檔的DTD或Schema時產生DTD或Schema事件。
  任何元數據通常都由單獨的事件交付。
  產生錯誤事件用來通知主機應用程序解析錯誤。
對于如下文檔:

在解析文檔的過程中會產生如下一系列事件:
  start document
  start element: doc
  start element: para
  characters: Hello, world!
  end element: para
  stat element:title
  characters:sax parse xml
  end element:title
  end element: doc
  end document

一個完整的SAX處理過程涉及如下幾個步驟:
  (1)創建事件處理程序。
 ?。?)創建SAX解析器。
  (4)對文檔進行解析,將每個事件發送給處理程序。
 ?。?)將事件處理程序分配給解析器。

SAX的優缺點
  SAX的優點:
  解析速度快
  ContentHandler對象可以是多個
  內存消耗少
SAX的缺點:
  必須實現事件處理程序
  不能修改文檔
  不能隨機訪問
  SAX解析器對文檔的解析過程是一種邊解析邊執行的過程
  SAX解析器對文檔的解析過程中,無需把整個文檔都加載到內存中
  使用SAX解析器時,可以注冊多個ContentHandler對象,并行接收事件
  SAX解析器對文檔的解析是順序進行的
  使用SAX對文檔進行解析,只能訪問文檔內容,無法做到向文檔中添加節點,更不能刪除和修改文檔中的內容。

SAX的常用接口介紹
  ContentHandler接口
  ContentHandler是Java類包中一個特殊的SAX接口,位于org.xml.sax包中。該接口封裝了一些對事件處理的方法,當XML解析器開始解析XML輸入文檔時,它會遇到某些特殊的事件,比如文檔的開頭和結束、元素開頭和結束、以及元素中的字符數據等事件。當遇到這些事件時,XML解析器會調用ContentHandler接口中相應的方法來響應該事件。
ContentHandler接口的方法有以下幾種:

DTDHandler接口
  DTDHandler用于接收基本的DTD相關事件的通知。該接口位于org.xml.sax包中。此接口僅包括DTD事件的注釋和未解析的實體聲明部分。SAX解析器可按任何順序報告這些事件,而不管聲明注釋和未解析實體時所采用的順序;但是,必須在文檔處理程序的startDocument()事件之后,在第一個startElement()事件之前報告所有的DTD事件。
DTDHandler接口包括以下兩個方法:

接收注釋聲明事件的通知
接收未解析的實體聲明事件的通知
  EntityResolver接口
  EntityResolver接口是用于解析實體的基本接口,該接口位于org.xml.sax包中。

該接口只有一個方法,如下:
  public InputSource resolveEntity(String publicId, String systemId)
  允許應用程序解析外部實體。并返回一個InputSource類的對象或者為null,用于讀取實體信息
  解析器將在打開任何外部實體前調用此方法。此類實體包括在DTD內引用的外部DTD子集和外部參數實體和在文檔元素內引用的外部通用實體等。如果SAX應用程序需要實現自定義處理外部實體,則必須實現此接口。

  ErrorHandler接口
  ErrorHandler接口是SAX錯誤處理程序的基本接口。如果SAX應用程序需要實現自定義的錯誤處理,則它必須實現此接口,然后解析器將通過此接口報告所有的錯誤和警告。

該接口的方法如下:
  void error(SAXParseException exception)
  void fatalError(SAXParseException exception)
  接收可恢復的錯誤通知
  接收不可恢復的錯誤通知
  void warning(SAXParseException exception)
  接收警告的通知

Android中XML解析模塊的使用方法


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。。?/p>

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久99蜜桃精品久久久久小说 | 亚洲黄色大片 | 免费国产之a视频 | 美女洗澡一级毛片 | 欧美人成一本免费观看视频 | 9久9久热精品视频在线观看 | 四虎精品视频 | 久久毛片视频 | 天天操人人射 | 久久国产精品免费一区二区三区 | 国产精品大片天天看片 | 亚洲国产高清美女在线观看 | 毛片随便看 | 欧美亚洲精品一区二三 | 亚洲国产综合精品中文字幕 | 九九视频在线播放 | 四虎影院永久 | 在线视频一二三区 | 午夜精品久久久久久久爽 | 欧美国产片 | 免费一级特黄视频 | 久久久久久久99精品免费观看 | 99热7| 久久嫩模| 婷婷四房色播 | 99久久精品国产一区二区三区 | 久久青草免费91线频观看站街 | 日本黄色小视频在线观看 | 一级毛片免费不卡在线 | 色射色 | 一级做人免费观看c欧美网站 | 国产精品久久久久无码av | 日本欧美久久久久免费播放网 | 精品一级毛片 | 亚洲六月丁香婷婷综合 | 亚洲综合精品一二三区在线 | 天天操精品| 波多野结衣xxxx性精品 | 中国一级全黄的免费观看 | 九九热伊人 | 深夜色 |