pull解析xml
发布时间:2020-12-16 00:32:38 所属栏目:百科 来源:网络整理
导读:http://www.blogjava.net/sxyx2008/archive/2010/08/04/327885.html 在上文中介绍了使用sax方式解析xml,这里介绍下在Android中极力推荐的xmlpull方式解析xml。xmlpull不仅仅可以使用在Android上,同样也适用于javase,但在javase环境下,你需要自己去获取xm
http://www.blogjava.net/sxyx2008/archive/2010/08/04/327885.html 在上文中介绍了使用sax方式解析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/ xmlpull http://kxml.sourceforge.net/ kxml xml文件:
<?xmlversion="1.0"encoding="UTF-8"?>
<root> studentid="1"group="1"name>张三</sex>男age>18email>zhangsan@163.combirthday>1987-06-08memo>好学生student="2"="2">李四>女>lisi@163.com="3"="3">小王>xiaowang@163.com="4"="4">小张>xiaozhang@163.com="5"="5">小明>xiaoming@163.com> Xml对应的实体bean文件:
packagecom.parsexml.entity;
publicclassStudent{ privateintid; intgroup; privateStringname; privateStringsex; intage; privateStringemail; privateStringmemo; privateStringbirthday; intgetId(){ returnid; } voidsetId(intid){ this.id=id; } intgetGroup(){ returngroup; } voidsetGroup(intgroup){ this.group=group; } publicStringgetName(){ returnname; } voidsetName(Stringname){ this.name=name; } publicStringgetSex(){ returnsex; } voidsetSex(Stringsex){ this.sex=sex; } intgetAge(){ returnage; } voidsetAge(intage){ this.age=age; } publicStringgetEmail(){ returnemail; } voidsetEmail(Stringemail){ this.email=email; } publicStringgetMemo(){ returnmemo; } voidsetMemo(Stringmemo){ this.memo=memo; } publicStringgetBirthday(){ returnbirthday; } voidsetBirthday(Stringbirthday){ this.birthday=birthday; } } Pull解析代码
packagecom.parsexml;
importjava.io.IOException; importjava.util.ArrayList; importjava.util.List; importorg.xmlpull.v1.XmlPullParser; importorg.xmlpull.v1.XmlPullParserException; importorg.xmlpull.v1.XmlPullParserFactory; importcom.parsexml.entity.Student; classPullParseXml{ publicList<Student>PullParseXML(){ List<Student>list=null; Studentstudent=null; //构建XmlPullParserFactory try{ XmlPullParserFactorypullParserFactory=XmlPullParserFactory.newInstance(); 获取XmlPullParser的实例 XmlPullParserxmlPullParser=pullParserFactory.newPullParser(); 设置输入流xml文件 xmlPullParser.setInput(Thread.currentThread().getContextClassLoader().getResourceAsStream("Student.xml"),"UTF-8"); 开始inteventType=xmlPullParser.getEventType(); try{ while(eventType!=XmlPullParser.END_DOCUMENT){ StringnodeName=xmlPullParser.getName(); switch(eventType){ 文档开始caseXmlPullParser.START_DOCUMENT: list=newArrayList<Student>(); break; 开始节点caseXmlPullParser.START_TAG: 判断如果其实节点为studentif("student".equals(nodeName)){ 实例化student对象 student=newStudent(); 设置Id属性 student.setId(Integer.parseInt(xmlPullParser.getAttributeValue(0))); 设置Group属性 student.setGroup(Integer.parseInt(xmlPullParser.getAttributeValue(1))); }elseif("name".equals(nodeName)){ 设置name student.setName(xmlPullParser.nextText()); }if("sex".equals(nodeName)){ 设置sex student.setSex(xmlPullParser.nextText()); }if("age".equals(nodeName)){ 设置age student.setAge(Integer.parseInt(xmlPullParser.nextText())); }if("email".equals(nodeName)){ 设置email student.setEmail(xmlPullParser.nextText()); }if("birthday".equals(nodeName)){ 设置birthday student.setBirthday(xmlPullParser.nextText()); }if("memo".equals(nodeName)){ 设置memo属性 student.setMemo(xmlPullParser.nextText()); } 结束节点caseXmlPullParser.END_TAG: if("student".equals(nodeName)){ list.add(student); student=null; } default: break; } eventType=xmlPullParser.next(); } }catch(NumberFormatExceptione){ e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace(); } }catch(XmlPullParserExceptione){ e.printStackTrace(); } returnlist; } staticvoidmain(String[]args){ List<Student>list=newPullParseXml().PullParseXML(); for(Studentstudent:list){ System.out.println("id:"+student.getId()+"tgroup:"+student.getGroup()+"tname:"+student.getName()+"tsex:"+student.getSex()+"tage:"+student.getAge()+"temail:"+student.getEmail()+"tbirthday:"+student.getBirthday()+"tmemo:"+student.getMemo()); } } } 注:若工程中缺少kxml2-2.3.0.jar文件则会报以下异常信息: 你应该添加kxml2-2.3.0.jar包到你的classpath下 效果图: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |