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

<?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. 调用百度地图Api实现的查看地图功能的小插件

    1. 功能 bMap.js 可根据地理位置调用出百度地图,采用弹出框形式 2.用法 var city = '青岛市'; var address = '香港中路'; bMap.init({ city : ...

  2. careercup-高等难度 18.9

    18.9 随机生成一些数字并传入某个方法.编写一个程序,每当收到新字符数字时,找出并记录中位数. 类似:设计一个数据结构,包括两个函数,插入数据和获得中位数 解法: 一种解法是使用两个优先级堆:一个大 ...

  3. xy

    用C#實現Blob數據類型 PowerBuilder提供了Blob數據類型, 用來處理二進制數據(如:圖像,文件,二進制流,文本等等). 本質上, Blob是可變長的字節數組, 它提供了一系列全局函數 ...

  4. 前端MVC框架对比

    首先要特别说明一下,作者认为以下四个功能是十分重要的: UI Bindings(UI绑定):作者想说的不仅仅是模板,而是想谈一种在底层模型出现变化时,视图层能够自动相应地更新的陈述性方法.一旦您用过了 ...

  5. mysql服务器的常规操作

    mysql服务器的常规操作 导读 MySQL是一个小型关系数据库管理系统,目前被广泛的应用在Internet上的中小型网站中,体积小.速度快.总体拥有成本低,尤其是开放源码这一特点,使得许多中小型网站 ...

  6. 代码片段---S3C2440按键中断驱动程序的设计

    用到的知识: 中断  等待队列  睡眠  select  poll  misc http://pan.baidu.com/s/1bneSG5h

  7. iOS H5 容器的一些探究(一):UIWebView 和 WKWebView 的比较和选择

    来源:景铭巴巴 链接:http://www.jianshu.com/p/84a6b1ac974a 一.Native开发中为什么需要H5容器 Native开发原生应用是手机操作系统厂商(目前主要是苹果的 ...

  8. Cable master(二分题 注意精度)

    Cable master Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 26596   Accepted: 5673 Des ...

  9. 1.4 Documents,Fields和Schema设计--目录

    1.4.1.Documents,Fields和Schema概述 1.4.2 solr字段类型 1.4.2 solr字段类型--(1.4.2.1)字段类型定义和字段类型属性 1.4.2 solr字段类型 ...

  10. Timed Code

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat=&qu ...