zoukankan      html  css  js  c++  java
  • 解析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;
        }
    }
  • 相关阅读:
    冒险岛数据封包分析
    【转】安装版系统封装入门详细解说
    拦截其它程序的网络数据封包
    封包加密解密-01
    vs2010下载Microsoft Visual Studio 2010 Express(vs2010中文版下载)速成官方合集正式版
    《Visual C++开发实战1200例 第1卷》扫描版[PDF]
    《Visual Basic开发实战1200例》包括第I卷、第II卷共计1200个例子,本书是第I卷,共计600个例子。
    服务器上常见软件
    HDU1686
    HDU3336
  • 原文地址:https://www.cnblogs.com/yshuaiw/p/3430649.html
Copyright © 2011-2022 走看看