日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Android中XML解析模塊的使用方法

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

張灣網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián),張灣網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為張灣上千多家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)要多少錢,請找那個售后服務(wù)好的張灣做網(wǎng)站的公司定做!

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

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

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

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

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

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

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

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

對于如下文檔:

 
 
  1. Hello, world!
  2. sax parse xml

在解析文檔的過程中會產(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)對文檔進(jìn)行解析,將每個事件發(fā)送給處理程序。

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

SAX的優(yōu)缺點(diǎn)

SAX的優(yōu)點(diǎn):

解析速度快

ContentHandler對象可以是多個

內(nèi)存消耗少

SAX的缺點(diǎn):

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

不能修改文檔

不能隨機(jī)訪問

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

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

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

SAX解析器對文檔的解析是順序進(jìn)行的

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

SAX的常用接口介紹

ContentHandler接口

ContentHandler是Java類包中一個特殊的SAX接口,位于org.xml.sax包中。該接口封裝了一些對事件處理的方法,當(dāng)XML解析 器開始解析XML輸入文檔時,它會遇到某些特殊的事件,比如文檔的開頭和結(jié)束、元素開頭和結(jié)束、以及元素中的字符數(shù)據(jù)等事件。當(dāng)遇到這些事件時,XML解 析器會調(diào)用ContentHandler接口中相應(yīng)的方法來響應(yīng)該事件。

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相關(guān)事件的通知。該接口位于org.xml.sax包中。此接口僅包括DTD事件的注釋和未解析的實(shí)體聲明部 分。SAX解析器可按任何順序報告這些事件,而不管聲明注釋和未解析實(shí)體時所采用的順序;但是,必須在文檔處理程序的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)

接收注釋聲明事件的通知

接收未解析的實(shí)體聲明事件的通知

EntityResolver接口

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

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

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

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

解析器將在打開任何外部實(shí)體前調(diào)用此方法。此類實(shí)體包括在DTD內(nèi)引用的外部DTD子集和外部參數(shù)實(shí)體和在文檔元素內(nèi)引用的外部通用實(shí)體等。如果SAX應(yīng)用程序需要實(shí)現(xiàn)自定義處理外部實(shí)體,則必須實(shí)現(xiàn)此接口。

ErrorHandler接口

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

該接口的方法如下:

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

網(wǎng)頁題目:Android中XML解析模塊的使用方法
文章位置:http://www.5511xx.com/article/coddoec.html