文件
pull解析xml文件先自己写一个xml文件,存一些天气信息拿到xml文件InputStream is = getClassLoader().getResourceAsStream("weather.xml");
拿到pull解析器XmlPullParser xp = Xml.newPullParser();
开始解析拿到指针所在当前节点的事件类型
int type = xp.getEventType();
事件类型主要有五种
START_DOCUMENT:xml头的事件类型END_DOCUMENT:xml尾的事件类型START_TAG:开始节点的事件类型END_TAG:结束节点的事件类型TEXT:文本节点的事件类型如果获取到的事件类型不是END_DOCUMENT,就说明解析还没有完成,如果是,解析完成,while循环结束
while(type != XmlPullParser.END_DOCUMENT)
当我们解析到不同节点时,需要进行不同的操作,所以判断一下当前节点的name
当解析到weather的开始节点时,new出list当解析到city的开始节点时,创建city对象,创建对象是为了更方便的保存即将解析到的文本当解析到name开始节点时,获取下一个节点的文本内容,temp、pm也是一样
case XmlPullParser.START_TAG:
//获取当前节点的名字
if("weather".equals(xp.getName())){
citys = new ArrayList<City>();
}
else if("city".equals(xp.getName())){
city = new City();
}
else if("name".equals(xp.getName())){
//获取当前节点的下一个节点的文本
String name = xp.nextText();
city.setName(name);
}
else if("temp".equals(xp.getName())){
String temp = xp.nextText();
city.setTemp(temp);
}
else if("pm".equals(xp.getName())){
String pm = xp.nextText();
city.setPm(pm);
}
break;
当解析到city的结束节点时,说明city的三个子节点已经全部解析完了,把city对象添加至list
case XmlPullParser.END_TAG:
if("city".equals(xp.getName())){
citys.add(city);
}
//获取到src文件夹下的资源文件InputStream is = getClassLoader().getResourceAsStream("weather.xml");//拿到pull解析器对象XmlPullParser xp =Xml.newPullParser();//初始化try{
xp.setInput(is,"gbk");//获取当前节点的事件类型,通过事件类型的判断,我们可以知道当前节点是什么节点,从而确定我们应该做什么操作inttype =xp.getEventType();
City city=null;while(type !=XmlPullParser.END_DOCUMENT){//根据节点的类型,要做不同的操作switch(type) {caseXmlPullParser.START_TAG://获取当前节点的名字if("weather".equals(xp.getName())){//创建city集合对象,用于存放city的javabeancityList =newArrayList<City>();
}elseif("city".equals(xp.getName())){//创建city的javabean对象city =newCity();
}elseif("name".equals(xp.getName())){//获取当前节点的下一个节点的文本String name =xp.nextText();
city.setName(name);
}elseif("temp".equals(xp.getName())){//获取当前节点的下一个节点的文本String temp =xp.nextText();
city.setTemp(temp);
}elseif("pm".equals(xp.getName())){//获取当前节点的下一个节点的文本String pm =xp.nextText();
city.setPm(pm);
}
break;caseXmlPullParser.END_TAG:if("city".equals(xp.getName())){//把city的javabean放入集合中cityList.add(city);
}
break;
}//把指针移动到下一个节点,并返回该节点的事件类型type =xp.next();
}for(City c : cityList) {
System.out.PRintln(c.toString());
}
}catch(Exception e) {//TODO Auto-generated catch blocke.printStackTrace();
}