<?xmlversion='1.0'encoding='utf-8'standalone='yes'?>
<weather>
<city>
<name>上海</name>
<temp>5°</temp>
<pm>80</pm>
</city>
<city>
<name>北京</name>
<temp>-5°</temp>
<pm>800</pm>
</city>
<city>
<name>西安</name>
<temp>12°</temp>
<pm>60</pm>
</city>
</weather>
packagecom.test.pullparser;
publicclassCityBean{
privateStringname;
privateStringtemp;
privateStringpm;
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicStringgetTemp(){
returntemp;
}
publicvoidsetTemp(Stringtemp){
this.temp=temp;
}
publicStringgetPm(){
returnpm;
}
publicvoidsetPm(Stringpm){
this.pm=pm;
}
}
packagecom.test.pullparser;
importjava.io.IOException;
importjava.io.InputStream;
importjava.util.ArrayList;
importjava.util.List;
importorg.xmlpull.v1.XmlPullParser;
importorg.xmlpull.v1.XmlPullParserException;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.util.Xml;
importandroid.view.View;
publicclassMainActivityextendsActivity{
List<CityBean>cityList=null;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
publicvoidclick(Viewv){
//拿到xml文件
InputStreaminputStream=getClassLoader().getResourceAsstream("weather.xml");
//使用pull解析器解析文件
//获取解析器对象
XmlPullParserxp=Xml.newPullParser();
//初始化
try{
CityBeancity=null;
xp.setInput(inputStream,"utf-8");
/*获取当前节点的事件类型,通过事件类型的判断,可以知道当前节点是
什么节点,从而确定将要执行的操作
intSTART_DOCUMENT=0;//解析到了头节点
intEND_DOCUMENT=1;//解析结束
intSTART_TAG=2;//解析到开始标签
intEND_TAG=3;//解析到结束标签
intTEXT=4;
intCDSECT=5;//CData区
intENTITY_REF=6;
intIGnorABLE_WHITESPACE=7;
intPROCESSING_INSTRUCTION=8;
intCOMMENT=9;
intDOCDECL=10;
*/
inttype=xp.getEventType();
while(type!=XmlPullParser.END_DOCUMENT){
//根据节点的事件类型,要做不同的操作
switch(type){
caseXmlPullParser.START_TAG:
//获取当前节点的名字
if("weather".equals(xp.getName())){
//创建cityJavabean对象,用于存放city集合
cityList=newArrayList<CityBean>();
}elseif("city".equals(xp.getName())){
//创建cityJavabean对象
city=newCityBean();
}elseif("name".equals(xp.getName())){
try{
Stringname=xp.nextText();
city.setName(name);
}catch(IOExceptione){
e.printstacktrace();
}
}
elseif("temp".equals(xp.getName())){
try{
Stringtemp=xp.nextText();
city.setTemp(temp);
}catch(IOExceptione){
e.printstacktrace();
}
}
elseif("pm".equals(xp.getName())){
try{
Stringpm=xp.nextText();
city.setPm(pm);
}catch(IOExceptione){
e.printstacktrace();
}
}
break;
caseXmlPullParser.END_TAG:
if("city".equals(xp.getName())){
//把cityjavabean放入集合中
cityList.add(city);
}
break;
default:
break;
}
}
}catch(XmlPullParserExceptione){
e.printstacktrace();
}
}
}