且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Android--使用XMLPull解析xml

更新时间:2022-09-08 10:42:38

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文件:

[html] view plain copy  print?Android--使用XMLPull解析xmlAndroid--使用XMLPull解析xml
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <root>  
  3.     <student id="1" group="1">  
  4.         <name>张三</name>  
  5.         <sex></sex>  
  6.         <age>18</age>  
  7.         <email>zhangsan@163.com</email>  
  8.         <birthday>1987-06-08</birthday>  
  9.         <memo>好学生</memo>  
  10.     </student>  
  11.     <student id="2" group="2">  
  12.         <name>李四</name>  
  13.         <sex></sex>  
  14.         <age>18</age>  
  15.         <email>lisi@163.com</email>  
  16.         <birthday>1987-06-08</birthday>  
  17.         <memo>好学生</memo>  
  18.     </student>  
  19.     <student id="3" group="3">  
  20.         <name>小王</name>  
  21.         <sex></sex>  
  22.         <age>18</age>  
  23.         <email>xiaowang@163.com</email>  
  24.         <birthday>1987-06-08</birthday>  
  25.         <memo>好学生</memo>  
  26.     </student>  
  27.     <student id="4" group="4">  
  28.         <name>小张</name>  
  29.         <sex></sex>  
  30.         <age>18</age>  
  31.         <email>xiaozhang@163.com</email>  
  32.         <birthday>1987-06-08</birthday>  
  33.         <memo>好学生</memo>  
  34.     </student>  
  35.     <student id="5" group="5">  
  36.         <name>小明</name>  
  37.         <sex></sex>  
  38.         <age>18</age>  
  39.         <email>xiaoming@163.com</email>  
  40.         <birthday>1987-06-08</birthday>  
  41.         <memo>好学生</memo>  
  42.     </student>  
  43. </root>  
Xml对应的实体bean文件:

[java] view plain copy  print?Android--使用XMLPull解析xmlAndroid--使用XMLPull解析xml
  1. package com.parsexml.entity;  
  2.   
  3. public class Student {  
  4.       
  5.     private int id;  
  6.     private int group;  
  7.     private String name;  
  8.     private String sex;  
  9.     private int age;  
  10.     private String email;  
  11.     private String memo;  
  12.     private String birthday;  
  13.     public int getId() {  
  14.         return id;  
  15.     }  
  16.     public void setId(int id) {  
  17.         this.id = id;  
  18.     }  
  19.     public int getGroup() {  
  20.         return group;  
  21.     }  
  22.     public void setGroup(int group) {  
  23.         this.group = group;  
  24.     }  
  25.     public String getName() {  
  26.         return name;  
  27.     }  
  28.     public void setName(String name) {  
  29.         this.name = name;  
  30.     }  
  31.     public String getSex() {  
  32.         return sex;  
  33.     }  
  34.     public void setSex(String sex) {  
  35.         this.sex = sex;  
  36.     }  
  37.     public int getAge() {  
  38.         return age;  
  39.     }  
  40.     public void setAge(int age) {  
  41.         this.age = age;  
  42.     }  
  43.     public String getEmail() {  
  44.         return email;  
  45.     }  
  46.     public void setEmail(String email) {  
  47.         this.email = email;  
  48.     }  
  49.     public String getMemo() {  
  50.         return memo;  
  51.     }  
  52.     public void setMemo(String memo) {  
  53.         this.memo = memo;  
  54.     }  
  55.     public String getBirthday() {  
  56.         return birthday;  
  57.     }  
  58.     public void setBirthday(String birthday) {  
  59.         this.birthday = birthday;  
  60.     }  
  61.       
  62. }  

Pull解析代码:

[java] view plain copy  print?Android--使用XMLPull解析xmlAndroid--使用XMLPull解析xml
  1. package com.parsexml;  
  2.   
  3. import java.io.IOException;  
  4. import java.util.ArrayList;  
  5. import java.util.List;  
  6.   
  7. import org.xmlpull.v1.XmlPullParser;  
  8. import org.xmlpull.v1.XmlPullParserException;  
  9. import org.xmlpull.v1.XmlPullParserFactory;  
  10.   
  11. import com.parsexml.entity.Student;  
  12.   
  13. public class PullParseXml {  
  14.       
  15.       
  16.     public List<Student> PullParseXML(){  
  17.           
  18.         List<Student> list=null;  
  19.         Student student = null;  
  20.           
  21.         //构建XmlPullParserFactory  
  22.         try {  
  23.             XmlPullParserFactory pullParserFactory=XmlPullParserFactory.newInstance();  
  24.             //获取XmlPullParser的实例  
  25.             XmlPullParser xmlPullParser=pullParserFactory.newPullParser();  
  26.             //设置输入流  xml文件  
  27.             xmlPullParser.setInput(Thread.currentThread().getContextClassLoader().getResourceAsStream("Student.xml"), "UTF-8");  
  28.               
  29.             //开始  
  30.             int eventType=xmlPullParser.getEventType();  
  31.               
  32.             try {  
  33.                 while(eventType!=XmlPullParser.END_DOCUMENT){  
  34.                     String nodeName=xmlPullParser.getName();  
  35.                     switch (eventType) {  
  36.                     //文档开始  
  37.                     case XmlPullParser.START_DOCUMENT:  
  38.                         list=new ArrayList<Student>();  
  39.                         break;  
  40.                     //开始节点  
  41.                     case XmlPullParser.START_TAG:  
  42.                         //判断如果其实节点为student  
  43.                         if("student".equals(nodeName)){  
  44.                             //实例化student对象  
  45.                             student=new Student();  
  46.                             //设置Id属性  
  47.                             student.setId(Integer.parseInt(xmlPullParser.getAttributeValue(0)));  
  48.                             //设置Group属性  
  49.                             student.setGroup(Integer.parseInt(xmlPullParser.getAttributeValue(1)));  
  50.                         }else if("name".equals(nodeName)){  
  51.                             //设置name  
  52.                             student.setName(xmlPullParser.nextText());  
  53.                         }else if("sex".equals(nodeName)){  
  54.                             //设置sex  
  55.                             student.setSex(xmlPullParser.nextText());  
  56.                         }else if("age".equals(nodeName)){  
  57.                             //设置age  
  58.                             student.setAge(Integer.parseInt(xmlPullParser.nextText()));  
  59.                         }else if("email".equals(nodeName)){  
  60.                             //设置email  
  61.                             student.setEmail(xmlPullParser.nextText());  
  62.                         }else if("birthday".equals(nodeName)){  
  63.                             //设置birthday  
  64.                             student.setBirthday(xmlPullParser.nextText());  
  65.                         }else if("memo".equals(nodeName)){  
  66.                             //设置memo属性  
  67.                             student.setMemo(xmlPullParser.nextText());  
  68.                         }  
  69.                         break;  
  70.                     //结束节点  
  71.                     case XmlPullParser.END_TAG:  
  72.                         if("student".equals(nodeName)){  
  73.                             list.add(student);  
  74.                             student=null;  
  75.                         }  
  76.                         break;  
  77.                     default:  
  78.                         break;  
  79.                     }  
  80.                     eventType=xmlPullParser.next();  
  81.                 }  
  82.             } catch (NumberFormatException e) {  
  83.                 e.printStackTrace();  
  84.             } catch (IOException e) {  
  85.                 e.printStackTrace();  
  86.             }  
  87.         } catch (XmlPullParserException e) {  
  88.             e.printStackTrace();  
  89.         }  
  90.   
  91.         return list;  
  92.     }  
  93.       
  94.     public static void main(String[] args) {  
  95.         List<Student> list=new PullParseXml().PullParseXML();  
  96.         for(Student student:list){  
  97.             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());  
  98.         }  
  99.     }  
  100.       
  101. }  

注:若工程中缺少kxml2-2.3.0.jar文件则会报以下异常信息:

你应该添加kxml2-2.3.0.jar包到你的classpath下 


转载:http://blog.csdn.net/chaoyu168/article/details/50944968