Android--使用XMLPull解析xml

大道之行,天下为公。这篇文章主要讲述Android--使用XMLPull解析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文件:

< ?
xml version=" 1.0" encoding=" UTF-8" ?
> < root> < student id=" 1" group=" 1" > < name> 张三< /name> < sex> 男< /sex> < age> 18< /age> < email> [email  protected]< /email> < birthday> 1987-06-08< /birthday> < memo> 好学生< /memo> < /student> < student id=" 2" group=" 2" > < name> 李四< /name> < sex> 女< /sex> < age> 18< /age> < email> [email  protected]< /email> < birthday> 1987-06-08< /birthday> < memo> 好学生< /memo> < /student> < student id=" 3" group=" 3" > < name> 小王< /name> < sex> 男< /sex> < age> 18< /age> < email> [email  protected]< /email> < birthday> 1987-06-08< /birthday> < memo> 好学生< /memo> < /student> < student id=" 4" group=" 4" > < name> 小张< /name> < sex> 男< /sex> < age> 18< /age> < email> [email  protected]< /email> < birthday> 1987-06-08< /birthday> < memo> 好学生< /memo> < /student> < student id=" 5" group=" 5" > < name> 小明< /name> < sex> 男< /sex> < age> 18< /age> < email> [email  protected]< /email> < birthday> 1987-06-08< /birthday> < memo> 好学生< /memo> < /student> < /root>

Xml相应的实体bean文件:
package com.parsexml.entity; public class Student {private int id; private int group; private String name; private String sex; private int age; private String email; private String memo; private String birthday; public int getId() { return id; } public void setId(int id) { this.id = id; } public int getGroup() { return group; } public void setGroup(int group) { this.group = group; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getMemo() { return memo; } public void setMemo(String memo) { this.memo = memo; } public String getBirthday() { return birthday; } public void setBirthday(String birthday) { this.birthday = birthday; }}


Pull解析代码:
package com.parsexml; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import org.xmlpull.v1.XmlPullParserFactory; import com.parsexml.entity.Student; public class PullParseXml {public List< Student> PullParseXML(){List< Student> list=null; Student student = null; //构建XmlPullParserFactory try { XmlPullParserFactory pullParserFactory=XmlPullParserFactory.newInstance(); //获取XmlPullParser的实例 XmlPullParser xmlPullParser=pullParserFactory.newPullParser(); //设置输入流xml文件 xmlPullParser.setInput(Thread.currentThread().getContextClassLoader().getResourceAsStream(" Student.xml" ), " UTF-8" ); //開始 int eventType=xmlPullParser.getEventType(); try { while(eventType!=XmlPullParser.END_DOCUMENT){ String nodeName=xmlPullParser.getName(); switch (eventType) { //文档開始 case XmlPullParser.START_DOCUMENT: list=new ArrayList< Student> (); break; //開始节点 case XmlPullParser.START_TAG: //推断假设事实上节点为student if(" student" .equals(nodeName)){ //实例化student对象 student=new Student(); //设置Id属性 student.setId(Integer.parseInt(xmlPullParser.getAttributeValue(0))); //设置Group属性 student.setGroup(Integer.parseInt(xmlPullParser.getAttributeValue(1))); }else if(" name" .equals(nodeName)){ //设置name student.setName(xmlPullParser.nextText()); }else if(" sex" .equals(nodeName)){ //设置sex student.setSex(xmlPullParser.nextText()); }else if(" age" .equals(nodeName)){ //设置age student.setAge(Integer.parseInt(xmlPullParser.nextText())); }else if(" email" .equals(nodeName)){ //设置email student.setEmail(xmlPullParser.nextText()); }else if(" birthday" .equals(nodeName)){ //设置birthday student.setBirthday(xmlPullParser.nextText()); }else if(" memo" .equals(nodeName)){ //设置memo属性 student.setMemo(xmlPullParser.nextText()); } break; //结束节点 case XmlPullParser.END_TAG: if(" student" .equals(nodeName)){ list.add(student); student=null; } break; default: break; } eventType=xmlPullParser.next(); } } catch (NumberFormatException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } catch (XmlPullParserException e) { e.printStackTrace(); }return list; }public static void main(String[] args) { List< Student> list=new PullParseXml().PullParseXML(); for(Student student: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()); } }}


注:若project中缺少kxml2-2.3.0.jar文件则会报下面异常信息:
【Android--使用XMLPull解析xml】你应该加入kxml2-2.3.0.jar包到你的classpath下 









    推荐阅读