Xml解析之PULL解析 例1
<?xml version="1.0" encoding="UTF-8"?>
<persons>
<person id="1">
<name>zhangsan</name>
<age>22</age>
<sex>boy</sex>
</person>
<person id="2">
<name>李四</name>
<age>20</age>
<sex>女</sex>
</person>
</persons> 解析以上person.xml PULL解析:基于事件拉取
5个属性:每一个事件对应一个常量
START_DOCUMENT:开始文档 常量值 0
START_TAG:开始标签 2
TEXT: 文本 常量值 4
END_TAG: 结束标签 3
END_DOCUMENT: 结束文档 1
非常重要的方法:
next():检索下一个事件
例1. 创建了Person类。
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List; import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory; public class Demo3 { public static void main(String[] args) throws XmlPullParserException,
IOException {
// 1、获取pull解析器的对象工厂
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
// 2、从工厂对象中获取解析器
XmlPullParser parser = factory.newPullParser();
// 3、设置解析文档
parser.setInput(new FileInputStream("src/person.xml"), "utf-8");
// 4、开始解析
List<Person> list = null;
Person p = null;
// 获取事件类型
int type = parser.getEventType();
while (type != XmlPullParser.END_DOCUMENT) {
String tagName = parser.getName();
switch (type) {
case XmlPullParser.START_TAG:
if ("persons".equals(tagName)) {
// 如果开始标记是persons,应该创建集合
list = new ArrayList<Person>();
} else if ("person".equals(tagName)) {
// 如果开始标记是person,应该创建person对象
p = new Person();
if (parser.getAttributeCount() > 0) {
// 获取属性id的值,赋值给person对象的id属性
p.setId(parser.getAttributeValue(0));// 第一个属性
}
} else if ("name".equals(tagName)) {
p.setName(parser.nextText());
} else if ("age".equals(tagName)) {
p.setAge(Integer.parseInt(parser.nextText()));
} else if ("sex".equals(tagName)) {
p.setSex(parser.nextText());
}
break;
case XmlPullParser.END_TAG:
if ("person".equals(tagName)) {
// </person> 将Person放入list集合
list.add(p);
}
break;
}
// 很重要的步骤:获取下次事件类型
type = parser.next();
}
// 打印list
for (Person per : list) {
System.out.println(per);
}
} static class Person {
private String id;
private String name;
private int age;
private String sex; public Person() {
super();
} public Person(String id, String name, int age, String sex) {
super();
this.id = id;
this.name = name;
this.age = age;
this.sex = sex;
} public String getId() {
return id;
} public void setId(String str) {
this.id = str;
} 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 String getSex() {
return sex;
} public void setSex(String sex) {
this.sex = sex;
} @Override
public String toString() {
return "Person [id=" + id + ", name=" + name + ", age=" + age
+ ", sex=" + sex + "]";
} }
}
Xml解析之PULL解析 例1的更多相关文章
- 非常简单的XML解析(SAX解析、pull解析)
这里只是把解析的数据当日志打出来了 非常简单的xml解析方式 package com.example.demo.service; import java.io.IOException; import ...
- XMl解析之Pull解析
HttpUtils: package cn.qf.parser; import java.io.BufferedOutputStream; import java.io.FileOutputStrea ...
- XML 序列化与PULL解析
简介 Pull解析XML XmlPullParser解析器的运行方式与SAX解析器相似.它提供了类似的事件(开始元素和结束元素),但需要使用parser.next()方法来提取它们.事件将作为数值代码 ...
- Xml解析之PULL解析 例2
<?xml version="1.0" encoding="UTF-8"?> <books> <book id="100 ...
- Android之Pull解析XML
一.Pull解析方法介绍 除了可以使用SAX和DOM解析XML文件,也可以使用Android内置的Pull解析器解析XML文件.Pull解析器的运行方式与SAX解析器相似.它也是事件触发的.Pull解 ...
- Android pull解析xml文件
本文介绍android中使用pull来解析xml文件 先自己写一个xml文件,存一些天气信息 <?xml version="1.0" encoding="UTF-8 ...
- 安卓使用pull解析器解析XML文件
学习一下: public class MainActivity extends Activity { List<City> cityList; @Override protected vo ...
- XML解析之PULL
在Android中极力推荐的xmlpull方式解析xml. 为什么 STAX 解析方式 效率 好于 SAX ? 1.SAX 无选择性的,所有事件都会处理 解析方式,Stax 由用户控制需要处理事件类型 ...
- pull解析xml文件
pull解析xml文件 先自己写一个xml文件,存一些天气信息 拿到xml文件 InputStream is = getClassLoader().getResourceAsStream(" ...
随机推荐
- 【LeetCode】Jump Game (一维动态规划 + 线性扫描)
Given an array of non-negative integers, you are initially positioned at the first index of the arra ...
- T-SQL 之 DDL语法
CREATE语句的开头都是一样的,然后是特定的细节. CREATE <object type> <object name> 一.CREATE DATABASE CREATE D ...
- Sword框架解析——知识采集流程页面初始化
Sword框架解析——知识采集流程页面初始化 Sword框架解析知识采集流程页面初始化 问题解答流程采集新增页面初始化 1后台t_xt_gnzy表和BLH类 2BLH类的写法前台目录树代码 3登录系统 ...
- Android相机基础基于camera2API
前言 最近,在使用Android做一个照相机的开发.因为不能使用系统提供的相机应用,所以只能自己写一个.Android以前提供相机的api叫camera,不过在level 21被Google抛弃了.网 ...
- Unity WP8开发环境
Unity WP8开发环境 VS2012旗舰版: 安装WP SDK8.0出错提示: 根据当前系统时钟或签名文件中的时间戳验证时要求的证书不在有效期内 解决办法: 方法一:把操作系统的时间日期调整到 ...
- 算法笔记_029:约瑟夫斯问题(Java)
目录 1 问题描述 2 解决方案 1 问题描述 引用自<算法设计与分析基础>第三版: 约瑟夫斯问题,是以弗拉瓦斯.约瑟夫斯(Flavius Josephus)的名字命名的.约瑟夫斯是一 ...
- python发送邮件方法总结
python中email模块使得处理邮件变得比较简单,今天着重学习了一下发送邮件的具体做法,这里写写自己的的心得,也请高手给些指点. 一.相关模块介绍 发送邮件主要用到了smtplib和ema ...
- Java之JVM调优案例分析与实战(1) - 高性能硬件上的程序部署策略
本JVM系列均来源于<深入理解Java虚拟机>一书中,版权归该书作者所有. 环境:一个15万PV/天左右的在线文档类型网站最近更换了硬件系统,新系统硬件为4个CPU.16GB物理内存.OS ...
- Linux下的编译器(转)
转自:http://ju.outofmemory.cn/entry/2051 简单的说,编译器就是一个可执行程序,它专门用于将程序员易于编写的高级语言 (如 C 语言) 翻译为机器可以识别的低级语言. ...
- 解决github push错误The requested URL returned error: 403 Forbidden while accessing(转)
github push错误: git push error: The requested URL returned error: 403 Forbidden while accessing https ...