Android初级教程:Android中解析方式之pull解析
生活随笔
收集整理的這篇文章主要介紹了
Android初级教程:Android中解析方式之pull解析
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
在安卓中有很多種解析方式。按照大方向有xml解析和json解析。而,細致的分,xml和json解析各有自己的很多解析方式。今天這一篇主要介紹xml解析中的pull解析。對于xml的解析方式,我之前在javaweb一些知識中有寫過dom和dom4j等等解析方式。有興趣的讀者可以去javaweb篇里面找相關的內(nèi)容。
先自定義一個數(shù)據(jù)源,假設就是訪問服務器返回的xml數(shù)據(jù)文件名稱為weather.xml:
<?xml version='1.0' encoding='utf-8' standalone='yes' ?> <weather><city><name>北京</name><temp>5°</temp><pm>80</pm></city><city><name>西安</name><temp>-5°</temp><pm>800</pm></city><city><name>南京</name><temp>12°</temp><pm>60</pm></city> </weather>針對此,建立一個javabean,以稍后保存上邊的數(shù)據(jù)。每一個city就代表一個對象。這樣更符合面向對象的思想
在mainactivity中代碼完成解析過程:
package com.itydl.pullparser;import java.io.InputStream; import java.util.ArrayList; import java.util.List;import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException;import com.itheima.pullparser.domain.City;import android.os.Bundle; import android.app.Activity; import android.util.Xml; import android.view.Menu; import android.view.View;//服務器向客戶端傳送數(shù)據(jù)。這些數(shù)據(jù)一般保存在xml文件中的。因此需要對數(shù)據(jù)進行解析、 public class MainActivity extends Activity {List<City> cityList;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}public void click(View v){//獲取到src文件夾下的資源文件ClassLoader.getResourceAsStream.返回的是InputStream類型的。InputStream is = getClassLoader().getResourceAsStream("weather.xml");//拿到pull解析器對象XmlPullParser是一個接口,不可以newXmlPullParser xp = Xml.newPullParser();//初始化try {xp.setInput(is, "utf-8");//初始化,設置文件的位置流對象(解析目標文件對象)和解析編碼格式//獲取當前節(jié)點的事件類型,因為pull解析是從xml文件第一行頭節(jié)點往下解析的,“指針”往下移動,標簽(節(jié)點)不同,事件類型就不同。//通過事件類型的判斷,我們可以知道當前節(jié)點是什么節(jié)點,從而確定我們應該做什么操作int type = xp.getEventType();City city = null;while(type != XmlPullParser.END_DOCUMENT){//xp.END_DOCUMENT//根據(jù)節(jié)點的類型,要做不同的操作switch (type) {case XmlPullParser.START_TAG:// 獲取當前節(jié)點的名字if("weather".equals(xp.getName())){//創(chuàng)建city集合對象,用于存放city的javabeancityList = new ArrayList<City>();}else if("city".equals(xp.getName())){//創(chuàng)建city的javabean對象city = new City();}else if("name".equals(xp.getName())){// 獲取當前節(jié)點的下一個節(jié)點的[文本]String name = xp.nextText();city.setName(name);}else if("temp".equals(xp.getName())){// 獲取當前節(jié)點的下一個節(jié)點的文本String temp = xp.nextText();city.setTemp(temp);}else if("pm".equals(xp.getName())){// 獲取當前節(jié)點的下一個節(jié)點的文本String pm = xp.nextText();city.setPm(pm);}break;case XmlPullParser.END_TAG:if("city".equals(xp.getName())){//把city的javabean放入集合中。三個城市city,解析完一個城市就把那個城市實例放到集合里面去。cityList.add(city);}break;}//把指針移動到下一個節(jié)點,并返回該節(jié)點的事件類型type = xp.next();}for (City c : cityList) {System.out.println(c.toString());}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}} 運行程序,解析結果如下:轉載于:https://www.cnblogs.com/wanghang/p/6299620.html
總結
以上是生活随笔為你收集整理的Android初级教程:Android中解析方式之pull解析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到父亲死了又复活了有什么兆头
- 下一篇: AndroidManifest.xml清