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

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

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

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

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

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

大多數(shù)SAX實現(xiàn)都會產(chǎn)生以下類型的事件

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

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

在處理文檔的DTD或Schema時產(chǎn)生DTD或Schema事件。

任何元數(shù)據(jù)通常都由單獨的事件交付。

產(chǎn)生錯誤事件用來通知主機應用程序解析錯誤。

對于如下文檔:

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

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

  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)創(chuàng)建事件處理程序。

(2)創(chuàng)建SAX解析器。

(4)對文檔進行解析,將每個事件發(fā)送給處理程序。

(3)將事件處理程序分配給解析器。

SAX的優(yōu)缺點

SAX的優(yōu)點:

解析速度快

ContentHandler對象可以是多個

內存消耗少

SAX的缺點:

必須實現(xiàn)事件處理程序

不能修改文檔

不能隨機訪問

SAX解析器對文檔的解析過程是一種邊解析邊執(zhí)行的過程

SAX解析器對文檔的解析過程中,無需把整個文檔都加載到內存中

使用SAX解析器時,可以注冊多個ContentHandler對象,并行接收事件

SAX解析器對文檔的解析是順序進行的

使用SAX對文檔進行解析,只能訪問文檔內容,無法做到向文檔中添加節(jié)點,更不能刪除和修改文檔中的內容。

SAX的常用接口介紹

ContentHandler接口

ContentHandler是Java類包中一個特殊的SAX接口,位于org.xml.sax包中。該接口封裝了一些對事件處理的方法,當XML解析 器開始解析XML輸入文檔時,它會遇到某些特殊的事件,比如文檔的開頭和結束、元素開頭和結束、以及元素中的字符數(shù)據(jù)等事件。當遇到這些事件時,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子集和外部參數(shù)實體和在文檔元素內引用的外部通用實體等。如果SAX應用程序需要實現(xiàn)自定義處理外部實體,則必須實現(xiàn)此接口。

ErrorHandler接口

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

該接口的方法如下:

  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數(shù)據(jù)庫SQLite

2011-08-29 15:58:51

Lua函數(shù)

2009-11-25 10:02:27

PHP會話Sessio

2011-08-19 13:51:12

2010-01-25 18:22:33

Android使用XM

2011-06-30 16:53:18

QT Creator TableWidge

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

2009-02-17 11:23:08

2024-01-02 09:21:18

SqlSugar數(shù)據(jù)庫ORM框架

2018-06-20 10:34:56

堆棧iOSswift

2009-09-23 13:23:12

Hibernate M

2021-05-08 06:14:28

Vue.js片段開發(fā)

2021-07-16 07:57:35

JavaScriptEval函數(shù)
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人a视频片观看免费 | 午夜激情视频在线 | 欧美高清性xxxxhd| 伊人久久精品 | 老司机精品福利视频 | 久久99精品久久久97夜夜嗨 | 亚洲欧美在线视频 | 国产精品小视频在线观看 | 久久久久久久久久久久91 | 超碰97干| 精品欧美一区二区三区免费观看 | 日本免费在线 | 成年网站在线观看 | 成人精品影院 | 亚洲一区中文字幕 | 成人无遮挡毛片免费看 | 日韩一区在线观看视频 | 精品日韩一区二区 | 欧美电影在线观看网站 | 国产精品国产三级国产aⅴ中文 | 99国产精品99久久久久久 | 成人高清在线视频 | 婷婷色综合 | www.888www看片| 最新中文字幕在线 | 亚洲综合三区 | 日韩av电影在线观看 | 亚洲国产精品久久久久婷婷老年 | 国产一区二区三区视频 | 久久99精品视频 | 日本精品视频在线观看 | 黄免费观看视频 | 精品成人一区二区 | 国产在线视频在线观看 | 黄色毛片免费看 | 日本一区不卡 | 精品不卡 | 亚洲精品亚洲人成人网 | 亚洲 欧美 综合 | 午夜欧美a级理论片915影院 | 精品国产一区一区二区三亚瑟 |