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

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

系統 2678 0

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

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

例如上圖,客戶端發送一個request請求,服務端就會以xml的數據格式返回一個response響應。但是在客戶端界面展示xml數據并不是那么人性化與現實,所以在此之前,會對xml進行數據解析。縱觀軟終端的大部分項目中,在客戶端進行數據解析采用的是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)創建事件處理程序。
  (2)創建SAX解析器。
  (4)對文檔進行解析,將每個事件發送給處理程序。
  (3)將事件處理程序分配給解析器。

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元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久合| 福利在线视频观看 | 九九99香蕉在线视频网站 | 250pp久久新 26uuu精品一区二区 | 亚洲精品成人中文网 | 26uuu中文字幕 | 性欧美4k高清精品 | 狠狠综合久久综合网站 | 香蕉视频网站在线播放 | 色偷偷久久一区二区三区 | 久久天天躁狠狠躁夜夜爽蜜月 | 亚洲欧美色综合自拍 | 成人小视频免费观看 | 国产精品日韩欧美 | 久久精品亚洲精品国产色婷 | 亚洲视频播放 | 国产美女亚洲精品久久久久久 | 九九九色视频在线观看免费 | 国产精品久久久久久久久久一区 | 国产三及 | 玖玖爱国产 | 国产福利免费看 | h片在线播放 | 久久久99精品免费观看精品 | 寡妇野外啪啪一区二区 | 国内精品视频九九九九 | 青娱乐91视频 | 日韩欧美第一页 | 四虎影在线永久免费观看 | 尤物视频黄| 久久国产精品亚洲77777 | 亚洲不卡一区二区三区在线 | 99热精品久久只有精品30 | 在线亚洲观看 | 欧美美妇性较大毛片 | 亚洲欧美另类在线视频 | 国产精品亚洲一区二区三区久久 | 久草在线新免费 | 免费看久久 | 欧美日韩在线精品成人综合网 | 国产一级免费在线观看 |