在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文件