天天看点

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