成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Android平臺(tái)下常見(jiàn)的XML解析有哪些-創(chuàng)新互聯(lián)

這篇文章將為大家詳細(xì)講解有關(guān)Android平臺(tái)下常見(jiàn)的XML解析有哪些,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

成都創(chuàng)新互聯(lián)公司成立于2013年,我們提供高端成都網(wǎng)站建設(shè)公司、網(wǎng)站制作公司成都網(wǎng)站設(shè)計(jì)、網(wǎng)站定制、成都全網(wǎng)營(yíng)銷(xiāo)、小程序設(shè)計(jì)、微信公眾號(hào)開(kāi)發(fā)、成都網(wǎng)站營(yíng)銷(xiāo)服務(wù),提供專(zhuān)業(yè)營(yíng)銷(xiāo)思路、內(nèi)容策劃、視覺(jué)設(shè)計(jì)、程序開(kāi)發(fā)來(lái)完成項(xiàng)目落地,為成都廣告設(shè)計(jì)企業(yè)提供源源不斷的流量和訂單咨詢(xún)。

XML在各種開(kāi)發(fā)中都廣泛應(yīng)用,Android也不例外。作為承載數(shù)據(jù)的一個(gè)重要角色,如何讀寫(xiě)XML成為Android開(kāi)發(fā)中一項(xiàng)重要的技能。今天就由我向大家介紹一下在Android平臺(tái)下幾種常見(jiàn)的XML解析和創(chuàng)建的方法。

在Android中,常見(jiàn)的XML解析器分別為SAX解析器、DOM解析器和PULL解析器,下面,我給大家做詳細(xì)的介紹。

SAX解析器:

SAX(Simple API for XML)解析器是一種基于事件的解析器,它的核心是事件處理模式,主要是圍繞著事件源以及事件處理器來(lái)工作的。當(dāng)事件源產(chǎn)生事件后,調(diào)用事件處理器相應(yīng)的處理方法,一個(gè)事件就可以得到處理。在事件源調(diào)用事件處理器中特定方法的時(shí)候,還要傳遞給事件處理器相應(yīng)事件的狀態(tài)信息,這樣事件處理器才能夠根據(jù)提供的事件信息來(lái)決定自己的行為。

SAX解析器的優(yōu)點(diǎn)是解析速度快,占用內(nèi)存少。非常適合在Android移動(dòng)設(shè)備中使用。

DOM解析器:

DOM是基于樹(shù)形結(jié)構(gòu)的的節(jié)點(diǎn)或信息片段的集合,允許開(kāi)發(fā)人員使用DOM API遍歷XML樹(shù)、檢索所需數(shù)據(jù)。分析該結(jié)構(gòu)通常需要加載整個(gè)文檔和構(gòu)造樹(shù)形結(jié)構(gòu),然后才可以檢索和更新節(jié)點(diǎn)信息。

由于DOM在內(nèi)存中以樹(shù)形結(jié)構(gòu)存放,因此檢索和更新效率會(huì)更高。但是對(duì)于特別大的文檔,解析和加載整個(gè)文檔將會(huì)很耗資源。

PULL解析器:

PULL解析器的運(yùn)行方式和SAX類(lèi)似,都是基于事件的模式。不同的是,在PULL解析過(guò)程中,我們需要自己獲取產(chǎn)生的事件然后做相應(yīng)的操作,而不像SAX那樣由處理器觸發(fā)一種事件的方法,執(zhí)行我們的代碼。PULL解析器小巧輕便,解析速度快,簡(jiǎn)單易用,非常適合在Android移動(dòng)設(shè)備中使用,Android系統(tǒng)內(nèi)部在解析各種XML時(shí)也是用PULL解析器。

在Android中,首推當(dāng)然就是pull解析器了。PULL解析器小巧輕便,解析速度快,簡(jiǎn)單易用,非常適合在Android移動(dòng)設(shè)備中使用,Android系統(tǒng)內(nèi)部在解析各種XML時(shí)也是用PULL解析器,Android官方推薦開(kāi)發(fā)者們使用Pull解析技術(shù)。Pull解析技術(shù)是第三方開(kāi)發(fā)的開(kāi)源技術(shù),它同樣可以應(yīng)用于JavaSE開(kāi)發(fā)。

PULL 的工作原理:

XML pull提供了開(kāi)始元素和結(jié)束元素。當(dāng)某個(gè)元素開(kāi)始時(shí),可以調(diào)用parser.nextText從XML文檔中提取所有字符數(shù)據(jù)。當(dāng)解析到一個(gè)文檔結(jié)束時(shí),自動(dòng)生成EndDocument事件。

常用的XML pull的接口和類(lèi):

XmlPullParser:該解析器是一個(gè)在org.xmlpull.v1中定義的解析功能的接口。

XmlSerializer:它是一個(gè)接口,定義了XML信息集的序列。

XmlPullParserFactory:這個(gè)類(lèi)用于在XMPULL V1 API中創(chuàng)建XML Pull解析器。

XmlPullParserException:拋出單一的XML pull解析器相關(guān)的錯(cuò)誤。

PULL解析器的運(yùn)行方式和SAX類(lèi)似,都是基于事件的模式。

不同的是,在PULL解析過(guò)程中返回的是數(shù)字,且我們需要自己獲取產(chǎn)生的事件然后做相應(yīng)的操作,而不像SAX那樣由處理器觸發(fā)一種事件的方法,執(zhí)行我們的代碼:

讀取到xml的聲明返回 START_DOCUMENT; 結(jié)束返回 END_DOCUMENT ; 開(kāi)始標(biāo)簽返回 START_TAG;

結(jié)束標(biāo)簽返回 END_TAG; 文本返回 TEXT。

最后對(duì)這3個(gè)解析技術(shù)做個(gè)比較與總結(jié):
對(duì)于Android的移動(dòng)設(shè)備而言,因?yàn)樵O(shè)備的資源比較寶貴,內(nèi)存是有限的,所以我們需要選擇適合的技術(shù)來(lái)解析XML,這樣有利于提高訪問(wèn)的速度。

DOM在處理XML文件時(shí),將XML文件解析成樹(shù)狀結(jié)構(gòu)并放入內(nèi)存中進(jìn)行處理。當(dāng)XML文件較小時(shí),我們可以選DOM,因?yàn)樗?jiǎn)單、直觀。

SAX則是以事件作為解析XML文件的模式,它將XML文件轉(zhuǎn)化成一系列的事件,由不同的事件處理器來(lái)決定如何處理。XML文件較大時(shí),選擇SAX技術(shù)是比較合理的。雖然代碼量有些大,但是它不需要將所有的XML文件加載到內(nèi)存中。這樣對(duì)于有限的Android內(nèi)存更有效,而且Android提供了一種傳統(tǒng)的SAX使用方法以及一個(gè)便捷的SAX包裝器。 使用Xml類(lèi),會(huì)比使用 SAX來(lái)得簡(jiǎn)單。

XML pull解析并未像SAX解析那樣監(jiān)聽(tīng)元素的結(jié)束,而是在開(kāi)始處完成了大部分處理。這有利于提早讀取XML文件,可以極大的減少解析時(shí)間,這種優(yōu)化對(duì)于連接速度較漫的移動(dòng)設(shè)備而言尤為重要。對(duì)于XML文檔較大但只需要文檔的一部分時(shí),XML Pull解析器則是更為有效的方法。

關(guān)于“Android平臺(tái)下常見(jiàn)的XML解析有哪些”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

分享文章:Android平臺(tái)下常見(jiàn)的XML解析有哪些-創(chuàng)新互聯(lián)
當(dāng)前鏈接:http://jinyejixie.com/article18/eijdp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、外貿(mào)網(wǎng)站建設(shè)做網(wǎng)站、面包屑導(dǎo)航小程序開(kāi)發(fā)、標(biāo)簽優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
上犹县| 江华| 田林县| 桃江县| 宁强县| 城步| 梁平县| 景德镇市| 洛宁县| 东港市| 兰坪| 监利县| 饶河县| 康马县| 黄石市| 彭阳县| 嘉兴市| 巴中市| 裕民县| 桦甸市| 平潭县| 云南省| 特克斯县| 托克托县| 株洲县| 淮滨县| 蒲城县| 兴仁县| 炉霍县| 民权县| 内黄县| 旌德县| 南开区| 清水县| 望城县| 福鼎市| 庄河市| 西贡区| 昌邑市| 双城市| 合江县|