欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

AndroidXML當中的Pull方式是什么

本篇內(nèi)容主要講解“Android XML當中的Pull方式是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Android XML當中的Pull方式是什么”吧!

覃塘ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!

提醒大家Android系統(tǒng)還提供了另一種XML解析方式可以使你更好的處理這種情況,就是Pull方式解析XML數(shù)據(jù)。

Pull解析器和SAX解析器雖有區(qū)別但也有相似性。他們的區(qū)別為:SAX解析器的工作方式是自動將事件推入注冊的事件處理器進行處理,因此你不能控制事件的處理主動結(jié)束;而Pull解析器的工作方式為允許你的應用程序代碼主動從解析器中獲取事件,正因為是主動獲取事件,因此可以在滿足了需要的條件后不再獲取事件,結(jié)束解析。這是他們主要的區(qū)別。

而他們的相似性在運行方式上,Pull解析器也提供了類似SAX的事件(開始文檔START_DOCUMENT和結(jié)束文檔END_DOCUMENT,開始元素START_TAG和結(jié)束元素END_TAG,遇到元素內(nèi)容TEXT等),但需要調(diào)用next() 方法提取它們(主動提取事件)。

Android系統(tǒng)中和Pull方式相關(guān)的包為org.xmlpull.v1,在這個包中提供了Pull解析器的工廠類XmlPullParserFactory和Pull解析器XmlPullParser,XmlPullParserFactory實例調(diào)用newPullParser方法創(chuàng)建 XmlPullParser解析器實例,接著XmlPullParser實例就可以調(diào)用getEventType()和next()等方法依次主動提取事 件,并根據(jù)提取的事件類型進行相應的邏輯處理。

下面我們就用上面介紹的Pull方式來實現(xiàn)解析XML形式的USGS地震數(shù)據(jù)的Demo例子。

程序首先也是定義解析用到的變量,在定義的用于解析xml數(shù)據(jù)的方法中

public ArrayList<EarthquakeEntry> parse(InputStream inStream)

定義了一個局部變量

boolean isDone = false;

用于標志在有滿足條件時停止讀取XML文檔,退出解析過程。

主體部分首先創(chuàng)建XmlPullParser。

我們來看看代碼:

//創(chuàng)建XmlPullParser,有兩種方式 //方式一:使用工廠類XmlPullParserFactory XmlPullParserFactory pullFactory = XmlPullParserFactory.newInstance(); XmlPullParser xmlPullParser = pullFactory.newPullParser(); //方式二:使用Android提供的實用工具類android.util.Xml XmlPullParser xmlPullParser = Xml.newPullParser();

創(chuàng)建XmlPullParser有兩種方式,一種是使用我們介紹的org.xmlpull.v1包中的工廠類XmlPullParserFactory。除了這種方式外,還可以使用android sdk提供的實用工具包android.util中的類Xml的newPullParser()方法直接創(chuàng)建。

接著為pull解析器設置要解析的xml文檔數(shù)據(jù),并使用主動的方式獲取解析器中的事件.

xmlPullParser.setInput(inStream, "UTF-8"); int eventType = xmlPullParser.getEventType();

我們***添加AndroidXMLDemoPull.java文件中的內(nèi)容

public class AndroidXMLDemoPull extends Activity { /** Called when the activity is first created. */ //定義顯示的List相關(guān)變量 ListView list; ArrayAdapter<EarthquakeEntry> adapter; ArrayList<EarthquakeEntry> earthquakeEntryList; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //獲取地震數(shù)據(jù)流 InputStream earthquakeStream = readEarthquakeDataFromFile(); //Pull方式進行xml解析 PullEarthquakeHandler pullHandler = new PullEarthquakeHandler(); earthquakeEntryList = pullHandler.parse(earthquakeStream); //用ListView進行顯示 list = (ListView)this.findViewById(R.id.list); adapter = new ArrayAdapter<EarthquakeEntry>(this, android.R.layout.simple_list_item_1, earthquakeEntryList); list.setAdapter(adapter); } private InputStream readEarthquakeDataFromFile() { //從本地獲取地震數(shù)據(jù) InputStream inStream = null; try { inStream = this.getAssets().open("USGS_Earthquake_1M2_5.xml"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return inStream; } private InputStream readEarthquakeDataFromInternet() { //從網(wǎng)絡上獲取實時地震數(shù)據(jù) URL infoUrl = null; InputStream inStream = null; try { infoUrl = new URL("http://earthquake.usgs.gov/earthquakes/catalogs/1day-M2.5.xml"); URLConnection connection = infoUrl.openConnection(); HttpURLConnection httpConnection = (HttpURLConnection)connection; int responseCode = httpConnection.getResponseCode(); if(responseCode == HttpURLConnection.HTTP_OK) { inStream = httpConnection.getInputStream(); } } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return inStream; } }

只是把進行XML解析的部分換成了如下方式:

//Pull方式進行xml解析 PullEarthquakeHandler pullHandler = new PullEarthquakeHandler(); earthquakeEntryList = pullHandler.parse(earthquakeStream);

到此,相信大家對“Android XML當中的Pull方式是什么”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學習!

分享標題:AndroidXML當中的Pull方式是什么
標題網(wǎng)址:http://chinadenli.net/article46/gophhg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供響應式網(wǎng)站、微信公眾號、用戶體驗、移動網(wǎng)站建設服務器托管、網(wǎng)頁設計公司

廣告

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

成都定制網(wǎng)站建設