成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

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

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

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

大多數SAX實現都會產生以下類型的事件

在文檔內每一XML元素接受解析的前后觸發元素事件。

在文檔的開始和結束時觸發文檔處理事件。

在處理文檔的DTD或Schema時產生DTD或Schema事件。

任何元數據通常都由單獨的事件交付。

產生錯誤事件用來通知主機應用程序解析錯誤。

對于如下文檔:

  1. <doc> 
  2. <para>Hello, world!</para> 
  3. <title>sax parse xml</title> 
  4. </doc> 

在解析文檔的過程中會產生如下一系列事件:

  1. start document 
  2. start element: doc 
  3. start element: para 
  4. characters: Hello, world! 
  5. end element: para 
  6. stat element:title 
  7. characters:sax parse xml 
  8. end element:title 
  9. end element: doc 
  10. 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接口的方法有以下幾種:

  1. void startDocument() 
  2. void characters(char[ ] ch, int start, int length) 
  3. void endDocument() 
  4. void startElement(String uri, String localName, String qName, Attributes atts) 
  5. void endElement(String uri, String localName, String qName) 

DTDHandler接口

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

DTDHandler接口包括以下兩個方法:

  1. void startDocumevoid notationDecl(String name, String publicId, String systemId) nt() 
  2. void unparsedEntityDecl(String name, String publicId, String systemId, String notationName) 

接收注釋聲明事件的通知

接收未解析的實體聲明事件的通知

EntityResolver接口

EntityResolver接口是用于解析實體的基本接口,該接口位于org.xml.sax包中。

該接口只有一個方法,如下

 

  1. public InputSource resolveEntity(String publicId, String systemId)  

允許應用程序解析外部實體。并返回一個InputSource類的對象或者為null,用于讀取實體信息

解析器將在打開任何外部實體前調用此方法。此類實體包括在DTD內引用的外部DTD子集和外部參數實體和在文檔元素內引用的外部通用實體等。如果SAX應用程序需要實現自定義處理外部實體,則必須實現此接口。

ErrorHandler接口

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

該接口的方法如下:

  1. void error(SAXParseException exception) 
  2. void fatalError(SAXParseException exception) 
  3. 接收可恢復的錯誤通知 
  4. 接收不可恢復的錯誤通知 
  5. void warning(SAXParseException exception) 
  6. 接收警告的通知 

 

責任編輯:閆佳明 來源: my.eoe.cn
相關推薦

2010-10-08 14:27:25

JavascriptSplit

2011-06-14 10:18:58

QThread Qt 線程

2010-08-09 10:16:01

FlexBuilder

2011-08-11 17:00:33

iPhone數據庫SQLite

2011-08-29 15:58:51

Lua函數

2009-11-25 10:02:27

PHP會話Sessio

2011-08-19 13:51:12

2011-06-30 16:53:18

QT Creator TableWidge

2010-01-25 18:22:33

Android使用XM

2010-06-12 16:30:51

UML設計

2010-11-19 09:56:38

SQLiteAndroid

2010-01-28 17:07:03

Android Gal

2011-08-23 09:44:28

LUA腳本

2010-10-09 10:30:03

JS event

2024-01-02 09:21:18

SqlSugar數據庫ORM框架

2009-02-17 11:23:08

2018-06-20 10:34:56

堆棧iOSswift

2021-07-16 07:57:35

JavaScriptEval函數

2009-09-23 13:23:12

Hibernate M

2021-05-08 06:14:28

Vue.js片段開發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日日操操| 亚洲一区二区三区 | 黄色操视频 | 一级片在线观看 | 毛片站| 91视频在线网站 | 国产精品射 | 91人人澡人人爽 | 久久久www成人免费精品 | 久久久精品视频一区二区三区 | 国产午夜精品久久久 | 久久精品欧美视频 | 色久在线| 久久亚洲一区二区 | 韩三级在线观看 | 欧美成人a∨高清免费观看 91伊人 | 国内自拍偷拍视频 | 777zyz色资源站在线观看 | 久久久久久久久久久蜜桃 | 精品视频在线观看 | 曰批视频在线观看 | 国产精品国产三级国产aⅴ原创 | 精品久久久久久久久久久久久 | 日本久久久久久久久 | 亚洲国产成人在线视频 | 精品国产一区二区三区久久影院 | 精品亚洲国产成av人片传媒 | 久久av一区二区三区 | 国产超碰人人爽人人做人人爱 | 日韩av在线免费 | 国产精品中文字幕在线 | 成年女人免费v片 | 成人在线亚洲 | 久久综合九色综合欧美狠狠 | 一级大黄 | 欧美激情视频一区二区三区免费 | 日韩在线观看中文字幕 | 夜夜爽99久久国产综合精品女不卡 | 精品日韩一区二区三区 | 伊人精品久久久久77777 | 九九热视频这里只有精品 |