java中采用Pull解析器对XML文件进行解析
一、基本介绍Android中极力推荐xmlpull方式解析xml。 xmlpull不仅可用在Android上同样也适用于javase,但在javase环境中需自己获取xmlpull所依赖的类库,kxml2-2.3.0.jar,xmlpull_1_1_3_4c.jar。 jar包下载网址http://www.xmlpull.org/http://kxml.sourceforge.net/ 二、例子 读取到xml的声明返回数字0 START_DOCUMENT; 读取到xml的结束返回数字1 END_DOCUMENT ; 读取到xml的开始标签返回数字2 START_TAG 读取到xml的结束标签返回数字3 END_TAG 读取到xml的文本返回数字4 TEXT <?xmlversion="1.0"encoding="UTF-8"?> <people> <personid="001"> <name>XY1</name> <age>22</age> </person> <personid="002"> <name>XY2</name> <age>22</age> </person> </people> publicclassPersonService { publicListgetPeople(InputStreamxml)throwsException { Listlst=null; Personperson=null; //获得pull解析器工厂 XmlPullParserFactorypullParserFactory=XmlPullParserFactory.newInstance(); //获取XmlPullParser的实例 XmlPullParserpullParser=pullParserFactory.newPullParser(); //设置需要解析的XML数据 pullParser.setInput(xml,"UTF-8"); //取得事件 intevent=pullParser.getEventType(); //若为解析到末尾 while(event!=XmlPullParser.END_DOCUMENT)//文档结束 { //节点名称 StringnodeName=pullParser.getName(); switch(event) { caseXmlPullParser.START_DOCUMENT://文档开始 lst=newArrayList(); break; caseXmlPullParser.START_TAG://标签开始 if("person".equals(nodeName)) { Stringid=pullParser.getAttributeValue(0); person=newPerson(); person.setId(id); } if("name".equals(nodeName)) { Stringname=pullParser.nextText(); person.setName(name); } if("age".equals(nodeName)) { intage=Integer.valueOf(pullParser.nextText()); person.setAge(age); } break; caseXmlPullParser.END_TAG://标签结束 if("person".equals(nodeName)) { lst.add(person); person=null; } break; } event=pullParser.next();//下一个标签 } returnlst; } } 本文转自 IT徐胖子的专栏博客51CTO博客,原文链接http://blog.51cto.com/woshixy/1077908如需转载请自行联系原作者 woshixuye111