解析XML文档之二:使用PULL解析

第一步:解析文档为一下文档

<?xml version="1.0" encoding="UTF-8"?>
<students>
    <student id="A001">
        <name>zhangsan</name>
        <sex>male</sex>
        <age>12</age>
        <address>beijing</address>
    </student>    
    <student id="A002">
        <name>lisi</name>
        <sex>male</sex>
        <age>13</age>
        <address>beijing</address>
    </student>
</students>

第二步:下载xml文档

public static InputStream downloader(String path) {
        InputStream inputStream = null;
        try {
            URL url = new URL(path);
            HttpURLConnection httpURLConnection = (HttpURLConnection) url
                    .openConnection();
            inputStream = httpURLConnection.getInputStream();
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
        return inputStream;
    }

第三步:解析过程

private void xmlPullParser(InputStream inputStream) {
        try {
            // 定义SAXParserFaco
            xmlPullParserFactory = XmlPullParserFactory.newInstance();
            xmlPullParser = xmlPullParserFactory.newPullParser();
            // xmlPullParser = Xml.newPullParser();
            xmlPullParser.setInput(inputStream, "UTF-8");

            int eventType = xmlPullParser.getEventType();

            while (eventType != XmlPullParser.END_DOCUMENT) {
                currentTagName = xmlPullParser.getName();
                switch (eventType) {
                case XmlPullParser.START_DOCUMENT:
                    list = new ArrayList<Student>();
                    break;
                case XmlPullParser.START_TAG:
                    if ("student".equals(currentTagName)) {
                        // 实例化Student对象
                        student = new Student();
                        // 获取属性ID
                        student.setId(xmlPullParser.getAttributeValue(0));
                    } else if ("name".equals(currentTagName)) {
                        student.setName(xmlPullParser.nextText());
                    } else if ("sex".equals(currentTagName)) {
                        student.setSex(xmlPullParser.nextText());
                    } else if ("age".equals(currentTagName)) {
                        student.setAge(Integer.parseInt(xmlPullParser
                                .nextText()));
                    } else if ("address".equals(currentTagName)) {
                        student.setAddress(xmlPullParser.nextText());
                    }
                    break;
                case XmlPullParser.END_TAG:
                    list.add(student);
                    printout(student);
                    break;
                case XmlPullParser.END_DOCUMENT:
                    System.out.println("end_document");
                    break;

                default:
                    break;
                }
                eventType = xmlPullParser.next();
            }

        } catch (Exception e) {
            // TODO: handle exception

        }
    }

实体类参考

package com.bjhksj.pull;

public class Student {
    private String id;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    private int age;

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    private String sex;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    private String address;

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}
原文地址:https://www.cnblogs.com/yshuaiw/p/3430649.html