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(" ...
随机推荐
- 怎样改动android系统字体大小
改动字体大小的方法是运用到一个ActivityManagerNative类 首先先在代码宣告 private Configuration mconfig = new Configuration(); ...
- dTree无限级文件夹树和JQuery同步Ajax请求
曾经都是用JQuery对树的支持来实现文件夹树的,近来闲来无事就弄了下dTree,感觉其无限级文件夹还是挺好的,并且它的使用也比較方便,基本上就是先把要用的js文件即dtree.js和css文件dtr ...
- [Functional Programming] Capture Side Effects in a Task / Async
We examine the data structure Task, see some constructors, familiar methods, and finally how it capt ...
- [小技巧] gcc attribute error 属性小试
gcc __attribute__ 里有一个属性是 error 能够用于编译时报错. 參考: https://gcc.gnu.org/onlinedocs/gcc-4.3.0/gcc/Functio ...
- Android与WebView的同步和异步訪问机制
大家都知道.通过WebView,我们能够在Androidclient.用Web开发的方式来开发我们的应用. 假设一个应用就是单纯一个WebView.全部的逻辑都仅仅须要在网页上交互的话,那我们事实上就 ...
- python selenium 自动化测试环境安装
注意:2.7和3.0版本的语法有些不一样 安装自动化测试软件 selenium(地址http://www.seleniumhq.org/download/) 安装步骤: 1.安装pythone运行环境 ...
- 【RESTful风格】软件接口设计中RESTful风格
REST = Representational State Transfer 表述性状态转移,是一种软甲接口设计风格.总之就是一种风格 REST基于:HTTP.HTML.JSON.XML.URI 这些 ...
- PHP-WebService中Endpoint、Disco、WSDL都是做什么的?
Endpoint: http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx web服务的URI地址,你访问之后,就会出现web服务的相 ...
- Cookie技术
u 常用的API 创建Cookie对象 Cookie(String name, String value) ->以指定数据创建Cookie对象 设置Cookie对象 void setMa ...
- ubuntu sudo 和su的区别
ubuntu用户管理 sudo意思就是super-user do,让当前用户暂时以管理员的身份root来执行这条命令. su是用来改变当前用户的,su root,就是将当前用户切换为root,用了su ...