android平台使用pull方式解析xml檔案,androidpull
android解析XML ---------------------------基礎要像磐石
在android平台上可以使用SAX、DOM和內建的Pull解析器解析xml檔案,本文主要介紹使用pull方式解析xml。pull解析器的運行方式和SAX解析器相似,他也有開始元素和結束元素事件,並且可以迴圈解析。可以使用nextText()方法擷取Text類型元素的值。
下面是將要解析的XML檔案,將此xml檔案存放在assets目錄下。
<?xml version="1.0" encoding="utf-8"?><info city='3'> <name>深圳</name> <temp>28℃</temp> <weather>多雲</weather> <msg>天氣適宜, 穿個比基尼!</msg></info>
建立一個javabean來存放解析出來的資料,建立類WeatherInfo,如下
public class WeatherInfo { private String name; private String temp; private String weather; private String msg; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getTemp() { return temp; } public void setTemp(String temp) { this.temp = temp; } public String getWeather() { return weather; } public void setWeather(String weather) { this.weather = weather; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } @Override public String toString() { return "[name=" + name + ", temp=" + temp + ", weather=" + weather + ", msg=" + msg + "]"; } }
下面開始解析
//Context上下文,儲存當前應用程式,系統資源和配置etc AssetManager am=this.getAssets(); try { InputStream is=am.open("weather.xml"); //1,建立xml解析器 XmlPullParser parser=Xml.newPullParser(); //2,初始化解析器,設定要解析的流資料,並設定編碼方式 parser.setInput(is,"utf-8"); //3,迴圈解析 int type=parser.getEventType(); WeatherInfo info=new WeatherInfo(); while(type!=XmlPullParser.END_DOCUMENT){ //如果是開始標籤 if(type==XmlPullParser.START_TAG){ if("name".equals(parser.getName())){ String name=parser.nextText();//擷取文本資料 info.setName(name); }else if("temp".equals(parser.getName())){ info.setTemp(parser.nextText()); }else if("weather".equals(parser.getName())){ info.setWeather(parser.nextText()); }else if("msg".equals(parser.getName())){ info.setMsg(parser.nextText()); } } //讓解析器移動到下一個 type=parser.next(); //關閉流 is.close();
tv_weather.setText(info.toString()); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }
Pull解析器的工作方式為允許應用程式代碼主動從解析器中擷取事件,正因為是主動擷取事件,因此可以隨時跳出。