文件

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體:   |    |    |  超大  

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();

}

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航