Pull解析XML

XML:

<?xml version="1.0" encoding="UTF-8"?>  
<persons>  
    <person id = "23">  
        <name>张老师</name>  
        <age>21</age>  
    </person>  
    <person id = "20">  
        <name>李老师</name>  
        <age>25</age>  
    </person>  
</persons>

JavaBean:

package com.pull.domain;  
      
    public class Person {  
      
        private int id;  
        private String name;  
        private int age;  
      
        public int getId() {  
            return id;  
        }  
      
        public Person(int id, String name, int age) {  
            super();  
            this.id = id;  
            this.name = name;  
            this.age = age;  
        }  
      
        public void setId(int id) {  
            this.id = id;  
        }  
      
        public String getName() {  
            return name;  
        }  
      
        public void setName(String name) {  
            this.name = name;  
        }  
      
        public int getAge() {  
            return age;  
        }  
      
        public void setAge(int age) {  
            this.age = age;  
        }  
      
        public Person() {  
            // TODO Auto-generated constructor stub  
        }  
      
        @Override  
        public String toString() {  
            return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";  
        }  
      
    }

PullXMLTools类:

package com.pull.parser;  
      
    import java.io.InputStream;  
    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.pull.domain.Person;  
      
    /** 
     * 主要是使用PULL解析xml 
     *  
     * @author jack 
     *  
     */  
    public class PullXMLTools {  
      
        public PullXMLTools() {  
            // TODO Auto-generated constructor stub  
        }  
      
        /** 
         * @param inputStream 
         *            从服务器获取xml文件,以流的形式返回 
         * @param encode 
         *            编码格式 
         * @return 
         * @throws Exception 
         */  
        public static List<Person> parseXML(InputStream inputStream, String encode)throws Exception {  
           List<Person> list = null;  
           Person person = null;// 装载解析每一个person节点的内容  
            // 创建一个xml解析的工厂  
            XmlPullParserFactory factory = XmlPullParserFactory.newInstance();  
            // 获得xml解析类的引用  
            XmlPullParser parser = factory.newPullParser();  
            parser.setInput(inputStream, encode);  
            // 获得事件的类型  
            int eventType = parser.getEventType();  
            while (eventType != XmlPullParser.END_DOCUMENT) {  
                switch (eventType) {  
                case XmlPullParser.START_DOCUMENT:  
                    list = new ArrayList<Person>();  
                    break;  
                case XmlPullParser.START_TAG:  
                    if ("person".equals(parser.getName())) {  
                        person = new Person();  
                        // 取出属性值  
                        int id = Integer.parseInt(parser.getAttributeValue(0));  
                        person.setId(id);  
                    } else if ("name".equals(parser.getName())) {  
                        String name = parser.nextText();// 获取该节点的内容  
                        person.setName(name);  
                    } else if ("age".equals(parser.getName())) {  
                        int age = Integer.parseInt(parser.nextText());  
                        person.setAge(age);  
                    }  
                    break;  
                case XmlPullParser.END_TAG:  
                    if ("person".equals(parser.getName())) {  
                        list.add(person);  
                        person = null;  
                    }  
                    break;  
                }  
                eventType = parser.next();  
            }  
            return list;  
        }  
      
    }

Test类:

package com.pull.test;  
      
    import java.io.InputStream;  
    import java.util.List;  
      
    import com.pull.domain.Person;  
    import com.pull.http.HttpUtils;  
    import com.pull.parser.PullXMLTools;  
      
    public class Test {  
      
        public Test() {  
            // TODO Auto-generated constructor stub  
        }  
      
        /** 
         * @param args 
         */  
        public static void main(String[] args) {  
            // TODO Auto-generated method stub  
            String path = "http://192.168.1.125:8080/myhttp/person.xml";  
            InputStream inputStream = HttpUtils.getXML(path);  
            List<Person> list = null;  
            try {  
                list = PullXMLTools.parseXML(inputStream, "utf-8");  
                for (Person person : list) {  
                    System.out.println(person.toString());  
                }  
            } catch (Exception e) {  
                // TODO Auto-generated catch block  
                e.printStackTrace();  
            }  
      
        }  
      
    }
posted @ 2015-11-18 09:01  wmkill  阅读(149)  评论(0编辑  收藏  举报