Java-->xml的pull解析
--> pull解析器是android内置的解析器,解析原理与sax类似
--> xml文件student.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!-- 有三个学生:姓名、年龄、性别。把这三个学生的信息用xml表示出来 -->
<students>
<student name="zhangsan">
<age>18</age>
<sex>男</sex>
</student>
<student name="lisi">
<age>22</age>
<sex>女</sex>
</student>
<student name="wangwu">
<age>20</age>
<sex>男</sex>
</student>
</students>
--> Student 类:
package com.dragon.java.pullparse;
public class Student {
private String name;
private int age;
private String sex;
public Student() {
super();
}
public Student(String name, int age, String sex) {
super();
this.name = name;
this.age = age;
this.sex = sex;
}
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 "Student [name=" + name + ", age=" + age + ", sex=" + sex + "]";
}
}
Student
--> Test 测试类:
package com.dragon.java.pullparse; import static org.xmlpull.v1.XmlPullParser.END_DOCUMENT;
import static org.xmlpull.v1.XmlPullParser.END_TAG;
import static org.xmlpull.v1.XmlPullParser.START_TAG;
import static org.xmlpull.v1.XmlPullParser.TEXT; import java.io.FileReader;
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; /*
* pull解析器
*/
public class Test {
public static void main(String[] args) throws XmlPullParserException,
IOException {
List<Student> list = null;
Student student = null;
// 1、获取一个XmlPullParser解析器
XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); // 调用解析器工厂的静态方法,创建一个解析器工厂
XmlPullParser parser = factory.newPullParser(); // 创建一个pull解析器
parser.setInput(new FileReader(
"D:/workspace/08-25/src/com/dragon/java/xml/students.xml")); // 设置一个输入流,告诉要解析的xml数据的来源
int event = parser.getEventType(); // 获取当前事件的类型
while (event != END_DOCUMENT) { // 当碰到文档结束的时候,结束循环
switch (event) {
case START_TAG:
String tag = parser.getName();
if (tag.equals("students")) {
list = new ArrayList<>();
} else if (tag.equals("student")) {
student = new Student();
student.setName(parser.getAttributeValue(null, "name")); // 参数1:是命名空间,如果命名空间,则传入null。参数2:属性的名字
list.add(student);
} else if (tag.equals("age")) {
student.setAge(Integer.parseInt(parser.nextText())); // 获取当前事件后面的text事件,text的值
} else if (tag.equals("sex")) {
student.setSex(parser.nextText());
}
break;
case END_TAG:
break;
case TEXT:
break;
default:
break;
}
event = parser.next();
}
for (Student student2 : list) {
System.out.println(student2);
}
}
}
--> 也是蛮麻烦的...
Java-->xml的pull解析的更多相关文章
- 网络获取数据的Xml的Pull解析
网络获取的XML的Pull解析 <?xml version="1.0" encoding="utf-8" ?> - <students> ...
- Java XML DOM解析范例源码
下边内容内容是关于Java XML DOM解析范例的内容.import java.io.InputStream; import java.util.ArrayList; import java.uti ...
- 基础学习总结(四)---内存获取、XML之PULL解析
外部项目引入如果没找到工程文件要先创建一个android项目在引入. 根据要查看的项目名在项目中搜索逐步查看 ==================== 内存详情获取: public class Mai ...
- Sax解析xml及pull解析xml
sax解析参考:http://www.iteye.com/topic/763895: 说明:测试时报空指针异常,未能读取到数据,关注Sax解析的过程及API即可: pull解析参考:http://ww ...
- XML的Pull解析
//通过xml解析串 private void XMLtoStr(String result) { News news=null; try { ...
- 网络获取的XML的Pull解析
<?xml version="1.0" encoding="utf-8" ?> - <students> - <student x ...
- Java XML JSON 数据解析
下面我们通过一段代码了解一下解析JSON格式数据的基本过程: 提示:使用JSON需要导入 JSON 相关的多个Jar文件 import net.sf.json.JSONObject; public c ...
- Android(java)学习笔记187:Android中操作XML数据(使用Pull解析器)
1. Pull解析器的运行方式与 SAX 解析器相似.它提供了类似的事件,如:开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件.跟SAX不同的是, Pull解析器 ...
- Android(java)学习笔记130:Android中操作XML数据(使用Pull解析器)
1. Pull解析器的运行方式与 SAX 解析器相似.它提供了类似的事件,如:开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件.跟SAX不同的是, Pull解析器 ...
- Android pull解析xml文件
本文介绍android中使用pull来解析xml文件 先自己写一个xml文件,存一些天气信息 <?xml version="1.0" encoding="UTF-8 ...
随机推荐
- CentOS 7 最小化安装的网络配置
默认的最小化安装CentOS 7系统以后,是没有ipconfig这个命令的,依赖于net-tools工具包. 一.nmtui 这是一个类似于图形化的命令(和setup类似) 通过这个组件窗口可以设置各 ...
- Jenkins RCE2(CVE-2016-0788)EXP
国内应该有这个EXP的不多,需要点JAVA基础,安装好maven之后,配置下就可以了,官网也给出了样例,乌云也给了分析.
- js获取url参数 兼容某些带#url
网上有大把现成的代码,不过有点小小的瑕疵 例如目前最流行的 正则法: function getArgument(_arg) { var reg = new RegExp("(^|&) ...
- JavaScript学习笔记及知识点整理_3
1.js的事件冒泡及阻止方法:事件冒泡的概念:在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或者事 ...
- openfire源码修改聊天消息发送内容
/** * $RCSfile: MessageRouter.java,v $ * $Revision: 3007 $ * $Date: 2005-10-31 13:29:25 -0300 (Mon, ...
- iOS开发 利用Reachability判断网络环境
导入头文件:#import "Reachability.h" 然后将 SystemConfiguration.framework 添加进工程: 1.检查当前的网络状态(wifi.W ...
- Spring4.1.0 整合quartz1.8.2 时 : class not found : org.springframework.scheduling.quartz.JobDetailBean
最近做一个 Spring4.1.0 集成 quartz1.8.2 定时器功能,一直报 class not found : org.springframework.scheduling.quartz.J ...
- CSS权重及样式优先级问题
CSS权重值计算 一条样式规则的整体权重值包含四个独立的部分:[A, B, C, D]; (1) A 表示内联样式(写在标签的style属性中),只有 1 或者 0 两个值:对于内联样式,由于没有选择 ...
- linux查看及改变运行级别
Linux运行级别从0-6,共7个. 0:关机.不能将系统缺省运行级别设置为0,否则无法启动. 1:单用户模式,只允许root用户对系统进行维护. 2:多用户模式,但不能使用NFS(相当于Window ...
- 第八章 企业项目开发--分布式缓存memcached
注意:本节代码基于<第七章 企业项目开发--本地缓存guava cache> 1.本地缓存的问题 本地缓存速度一开始高于分布式缓存,但是随着其缓存数量的增加,所占内存越来越大,系统运行内存 ...