pull解析xml
weather.xml
<?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文件 //获取src文件夹下的文件 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(); } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |