PULL解析XML

XML:

[html] view plain copy
 
 print?
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <persons>  
  3.     <person id = "23">  
  4.         <name>张老师</name>  
  5.         <age>21</age>  
  6.     </person>  
  7.     <person id = "20">  
  8.         <name>李老师</name>  
  9.         <age>25</age>  
  10.     </person>  
  11.   
  12. </persons>  


 

Person类:

[java] view plain copy
 
 print?
  1. package com.pull.domain;  
  2.   
  3. public class Person {  
  4.   
  5.     private int id;  
  6.     private String name;  
  7.     private int age;  
  8.   
  9.     public int getId() {  
  10.         return id;  
  11.     }  
  12.   
  13.     public Person(int id, String name, int age) {  
  14.         super();  
  15.         this.id = id;  
  16.         this.name = name;  
  17.         this.age = age;  
  18.     }  
  19.   
  20.     public void setId(int id) {  
  21.         this.id = id;  
  22.     }  
  23.   
  24.     public String getName() {  
  25.         return name;  
  26.     }  
  27.   
  28.     public void setName(String name) {  
  29.         this.name = name;  
  30.     }  
  31.   
  32.     public int getAge() {  
  33.         return age;  
  34.     }  
  35.   
  36.     public void setAge(int age) {  
  37.         this.age = age;  
  38.     }  
  39.   
  40.     public Person() {  
  41.         // TODO Auto-generated constructor stub  
  42.     }  
  43.   
  44.     @Override  
  45.     public String toString() {  
  46.         return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";  
  47.     }  
  48.   
  49. }  


PullXMLTools类:

[java] view plain copy
 
 print?
  1. package com.pull.parser;  
  2.   
  3. import java.io.InputStream;  
  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.pull.domain.Person;  
  12.   
  13. /** 
  14.  * 主要是使用PULL解析xml 
  15.  *  
  16.  * @author jack 
  17.  *  
  18.  */  
  19. public class PullXMLTools {  
  20.   
  21.     public PullXMLTools() {  
  22.         // TODO Auto-generated constructor stub  
  23.     }  
  24.   
  25.     /** 
  26.      * @param inputStream 
  27.      *            从服务器获取xml文件,以流的形式返回 
  28.      * @param encode 
  29.      *            编码格式 
  30.      * @return 
  31.      * @throws Exception 
  32.      */  
  33.     public static List<Person> parseXML(InputStream inputStream, String encode)  
  34.             throws Exception {  
  35.         List<Person> list = null;  
  36.         Person person = null;// 装载解析每一个person节点的内容  
  37.         // 创建一个xml解析的工厂  
  38.         XmlPullParserFactory factory = XmlPullParserFactory.newInstance();  
  39.         // 获得xml解析类的引用  
  40.         XmlPullParser parser = factory.newPullParser();  
  41.         parser.setInput(inputStream, encode);  
  42.         // 获得事件的类型  
  43.         int eventType = parser.getEventType();  
  44.         while (eventType != XmlPullParser.END_DOCUMENT) {  
  45.             switch (eventType) {  
  46.             case XmlPullParser.START_DOCUMENT:  
  47.                 list = new ArrayList<Person>();  
  48.                 break;  
  49.             case XmlPullParser.START_TAG:  
  50.                 if ("person".equals(parser.getName())) {  
  51.                     person = new Person();  
  52.                     // 取出属性值  
  53.                     int id = Integer.parseInt(parser.getAttributeValue(0));  
  54.                     person.setId(id);  
  55.                 } else if ("name".equals(parser.getName())) {  
  56.                     String name = parser.nextText();// 获取该节点的内容  
  57.                     person.setName(name);  
  58.                 } else if ("age".equals(parser.getName())) {  
  59.                     int age = Integer.parseInt(parser.nextText());  
  60.                     person.setAge(age);  
  61.                 }  
  62.                 break;  
  63.             case XmlPullParser.END_TAG:  
  64.                 if ("person".equals(parser.getName())) {  
  65.                     list.add(person);  
  66.                     person = null;  
  67.                 }  
  68.                 break;  
  69.             }  
  70.             eventType = parser.next();  
  71.         }  
  72.         return list;  
  73.     }  
  74.   
  75. }  


 

Test类:

[java] view plain copy
 
 print?
    1. package com.pull.test;  
    2.   
    3. import java.io.InputStream;  
    4. import java.util.List;  
    5.   
    6. import com.pull.domain.Person;  
    7. import com.pull.http.HttpUtils;  
    8. import com.pull.parser.PullXMLTools;  
    9.   
    10. public class Test {  
    11.   
    12.     public Test() {  
    13.         // TODO Auto-generated constructor stub  
    14.     }  
    15.   
    16.     /** 
    17.      * @param args 
    18.      */  
    19.     public static void main(String[] args) {  
    20.         // TODO Auto-generated method stub  
    21.         String path = "http://192.168.1.125:8080/myhttp/person.xml";  
    22.         InputStream inputStream = HttpUtils.getXML(path);  
    23.         List<Person> list = null;  
    24.         try {  
    25.             list = PullXMLTools.parseXML(inputStream, "utf-8");  
    26.             for (Person person : list) {  
    27.                 System.out.println(person.toString());  
    28.             }  
    29.         } catch (Exception e) {  
    30.             // TODO Auto-generated catch block  
    31.             e.printStackTrace();  
    32.         }  
    33.   
    34.     }  
    35.   
    36. }  
posted @ 2016-12-30 12:34  天涯海角路  阅读(87)  评论(0)    收藏  举报