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

<?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;
}
}

解析XML文档之二:使用PULL解析的更多相关文章

  1. 浅谈用java解析xml文档(二)

    上一文中总结了dom解析xml文档的方式,本文开始总结使用SAX解析xml 的方式及它的优缺点! SAX(Simple API for XML),是指一种接口,或者一个软件包. 首先我们应该知道SAX ...

  2. SAX解析XML文档——(二)

    SAX从上向下解析,一行一行解析.节省内存,不适合CRUD. XML文档: <?xml version="1.0" encoding="UTF-8"?&g ...

  3. 解析XML文档之三:使用DOM解析

    dom解析方法是将整个xml文档装载到内存当中,然后通过树形结构方式去解析的,这种方式只适合于在pc端的开发,不是很适合手机端的开发,毕竟来说手机的内存是没法跟pc相提并论的. 具体实现步骤如下: 第 ...

  4. 解析XML文档之一:使用SAX解析

    使用sax解析xml方法总结 解析的的xml文档格式如下 <?xml version="1.0" encoding = "UTF-8"?> < ...

  5. 使用JDom解析XML文档模拟Spring的配置文件解析

    在J2EE项目中可能会涉及到一些框架的使用,最近接触到了SSH,拿Spring来说配置文件的使用是相当重要的,Spring的配置文件是一个xml文件,Spring是如何读取到配置文件并进行依赖注入的呢 ...

  6. 四种生成和解析XML文档的方法详解(介绍+优缺点比较+示例)

    众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM.SAX.JDOM和DOM4J 下面首先给出这四种方法的jar包下载地址 DOM:在现在的Java JDK里都自带了,在xml- ...

  7. java 解析XML文档

    Java 解析XML文档 一.解析XML文档方式: 1.DOM方式:将整个XML文档读取到内存中,按照XML文件的树状结构图进行解析. 2.SAX方式:基于事件的解析,只需要加载XML中的部分数据,优 ...

  8. 浅谈用java解析xml文档(四)

    继续接上一文,这一阵子因为公司项目加紧,导致最后一个解析xml文档的方式,还没有总结,下面总结使用dom4J解析xml. DOM4J(Document Object Model for Java) 使 ...

  9. Java解析XML文档(简单实例)——dom解析xml

      一.前言 用Java解析XML文档,最常用的有两种方法:使用基于事件的XML简单API(Simple API for XML)称为SAX和基于树和节点的文档对象模型(Document Object ...

随机推荐

  1. boost.asio源码剖析(五) ---- 泛型与面向对象的完美结合

    有人说C++是带类的C:有人说C++是面向对象编程语言:有人说C++是面向过程与面向对象结合的语言.类似的评论网上有很多,虽然正确,却片面,是断章取义之言. C++是实践的产物,C++并没有为了成为某 ...

  2. 剑指 offer set 6 打印从 1 到 N 的所有数

    总结 1. 求全排列的变形题, 有些隐晦, 没看出来

  3. KFC数据测试hbase结果

    两个field,一个是KFC数据 一个列放的内容是“same” 每条数据都flush   SLF4J: Failed to load class "org.slf4j.impl.Static ...

  4. C#如何读写和创建INI文件

    在做项目过程中,有时需要保存一些简单的配置信息,可以使用xml,也可以使用INI文件.下面是C#中读取INI的方法,相信大部分朋友都使用过这种方式.INI文件的存储方式如下, [section] ke ...

  5. Linux修改用户组

    usermod -g group loginname 强行设置某个用户所在组 usermod -G groups loginname 把某个用户改为 group(s) usermod -a -G gr ...

  6. 关于变量在for循环内外定义的思考

    在c#或java里面,我们通常会这样写for循环: ;i<;i++) { Console.WriteLine(i); } 前一阵子,我突发奇想,如果按照下面这样写,会不会比上面的运行效率高一些: ...

  7. Python练习题 029:Project Euler 001:3和5的倍数

    开始做 Project Euler 的练习题.网站上总共有565题,真是个大题库啊! # Project Euler, Problem 1: Multiples of 3 and 5 # If we ...

  8. 2015 FVDI V6.3 Software Free Download

    2015 FVDI with software USB dongle has newly upgraded to V6.3. Here software upgrade list: ABRITES C ...

  9. extjs中grid对于其中表单的表头的读取以及是否隐藏的判断

    //获取grid的表头信息 var columns=baseGrid.columns;                     alert(columns.length); //判断列是否隐藏并输出表 ...

  10. Read / Write Excel file in Java using Apache POI

    Read / Write Excel file in Java using Apache POI 2014-04-18 BY DINESH LEAVE A COMMENT About a year o ...