加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

pull解析xml文件

发布时间:2020-12-16 05:53:27 所属栏目:百科 来源:网络整理
导读:TextView tv = (TextView) findViewById(R.id.tv);try {//getWeatherInfos方法参数是一个InputStream 把weather.xml导入weather.xmlListWeatherInfos infos = WeatherService.getWeatherInofs(MainActivity.class.getClassLoader().getResourceAsStream("wea
		TextView tv = (TextView) findViewById(R.id.tv);
		try {
			//getWeatherInfos方法参数是一个InputStream 把weather.xml导入weather.xml
			List<WeatherInfos> infos = WeatherService
					.getWeatherInofs(MainActivity.class.getClassLoader()
							.getResourceAsStream("weather.xml"));
			StringBuffer sb = new StringBuffer();
			for (WeatherInfos info : infos) {
				String str = info.toString();
				sb.append(str);
				sb.append("n");
			}
			tv.setText(sb.toString());
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			Toast.makeText(this,"解析信息失败",0).show();
		}



public class WeatherService {
	public static List<WeatherInfos> getWeatherInofs(InputStream is) throws Exception{
		XmlPullParser parser = Xml.newPullParser();
		//初始化解析器
		parser.setInput(is,"utf-8");
		List<WeatherInfos> weatherInfos = null;
		//WeatherInfos类,包含namew、wind、pm等成员变量
		WeatherInfos weatherInfo = null;
		int type = parser.getEventType();	
		while(type!=XmlPullParser.END_DOCUMENT){
			switch(type){
			case XmlPullParser.START_TAG:
				if("infos".equals(parser.getName())){
					//解析到全局开始的标签
					weatherInfos = new ArrayList<WeatherInfos>();
				}else if("city".equals(parser.getName())){
					weatherInfo = new WeatherInfos();
					String idStr = parser.getAttributeValue(0);
					weatherInfo.setId(Integer.parseInt(idStr));
				}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;
	}
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读