天天看點

android解析xml資料格式,Android解析XML檔案

在Android中解析xml檔案為我們提供了一個非常容易的工具XmlPullParser接口

測試使用的XML檔案内容:

20C/30C

5月20日 多雲轉陰

南風3-4級

上海

200

23C/25C

5月20日 多雲轉陰

南風1-2級

四川

50

6C/23C

5月20日 多雲轉陰

南風6-7級

北京

800

26C/34C

5月20日 多雲轉陰

南風7-7級

哈爾濱

100

解析XML檔案方法

public static List getWeatherInfos(InputStream is) throws Exception{

//建立集合

List weatherInfos=null;

//建立XmlPullParser對象

XmlPullParser parser=Xml.newPullParser();

//初始化解析器

parser.setInput(is,"UTF-8");

//擷取目前事件類型

int type=parser.getEventType();

WeatherInfos weatherInfo=null;

while(type!=XmlPullParser.END_DOCUMENT){

switch (type) {

case XmlPullParser.START_TAG:

if("infos".equals(parser.getName())){

weatherInfos=new ArrayList();

}else if("city".equals(parser.getName())){

weatherInfo=new WeatherInfos();

String id=parser.getAttributeValue(0);

weatherInfo.setId(Integer.parseInt(id));

}else if("temp".equals(parser.getName())){

String temp=parser.nextText();

weatherInfo.setTemp(temp);

}else if("weather".equals(parser.getName())){

String weather=parser.nextText();

weatherInfo.setWeather(weather);

}else if("wind".equals(parser.getName())){

String wind=parser.nextText();

weatherInfo.setWind(wind);

}else if("name".equals(parser.getName())){

String name=parser.nextText();

weatherInfo.setName(name);

}else if("pm".equals(parser.getName())){

String pm=parser.nextText();

weatherInfo.setPm(pm);

}

break;

case XmlPullParser.END_TAG:

if("city".equals(parser.getName())){

weatherInfos.add(weatherInfo);

weatherInfo=null;

}

break;

}

//擷取下一個事件類型

type=parser.next();

}

return weatherInfos;

}

在主方法中擷取集合并将資訊設定到TextView中:

tvWeather=(TextView) findViewById(R.id.tv_weather);

//擷取集合

try {

List weatherInfos=WeatherService.getWeatherInfos(MainActivity.this.getClassLoader().getResourceAsStream("back.xml"));

//建立StringBuffer對象

StringBuffer sb=new StringBuffer();

//周遊集合

for(WeatherInfos info:weatherInfos){

sb.append("編号:"+info.getId());

sb.append("\n城市名稱:"+info.getName());

sb.append("\n溫度:"+info.getTemp());

sb.append("\n空氣指數:"+info.getPm());

sb.append("\n天氣:"+info.getWeather());

sb.append("\n風力:"+info.getWind());

sb.append("\n\n");

}

//将資訊設定到TextView對象中

tvWeather.setText(sb.toString());

} catch (Exception e) {

e.printStackTrace();

}

這樣就實作了Android解析Xml檔案