欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

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

系統 2457 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黑人 | 日一日干一干 | 久久久久久免费免费 | 久久成人一区二区 | 搡女人的高清免费视频 | 免费xxx8888 | 春色www视频在线观看 | 91网在线观看 | 亚洲综合精品一区 | 国产精品久久久久影视青草 | 欧美精品成人一区二区三区四区 | 一区二区三区成人 | 中文字幕亚洲一区二区三区 | 涩色婷婷狠狠第四四房社区奇米 | 国产欧美日韩精品一区 | 五月天婷婷在线视频国产在线 | 久久成人一区二区 | 国产毛片欧美毛片久久久 | 午夜大片 | 午夜伦理在线播放 | 亚洲人一区 | 亚洲成人网页 | 91高清视频在线免费观看 | 亚洲精品手机在线 | 久操网址 | 操欧美女 | 亚洲国产精品久久久 | 成人国产一区二区三区 | 亚洲阿v天堂2021在线观看 | 亚洲狠狠婷婷综合久久蜜桃 | 看国产毛片 | 精品中文字幕在线观看 | 国产精品久久久久久影视 | 偷拍—91porny九色 | 日本不卡一区在线观看 | 欧美精品 在线播放 | 一级片性 | 超碰97人人艹 | 国产高清永久免费 | 午夜影院在线视频 |