在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檔案