--> 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解析的更多相关文章

  1. 网络获取数据的Xml的Pull解析

    网络获取的XML的Pull解析 <?xml version="1.0" encoding="utf-8" ?> - <students> ...

  2. Java XML DOM解析范例源码

    下边内容内容是关于Java XML DOM解析范例的内容.import java.io.InputStream; import java.util.ArrayList; import java.uti ...

  3. 基础学习总结(四)---内存获取、XML之PULL解析

    外部项目引入如果没找到工程文件要先创建一个android项目在引入. 根据要查看的项目名在项目中搜索逐步查看 ==================== 内存详情获取: public class Mai ...

  4. Sax解析xml及pull解析xml

    sax解析参考:http://www.iteye.com/topic/763895: 说明:测试时报空指针异常,未能读取到数据,关注Sax解析的过程及API即可: pull解析参考:http://ww ...

  5. XML的Pull解析

    //通过xml解析串    private void XMLtoStr(String result) {        News news=null;        try {             ...

  6. 网络获取的XML的Pull解析

    <?xml version="1.0" encoding="utf-8" ?> - <students> - <student x ...

  7. Java XML JSON 数据解析

    下面我们通过一段代码了解一下解析JSON格式数据的基本过程: 提示:使用JSON需要导入 JSON 相关的多个Jar文件 import net.sf.json.JSONObject; public c ...

  8. Android(java)学习笔记187:Android中操作XML数据(使用Pull解析器)

    1. Pull解析器的运行方式与 SAX 解析器相似.它提供了类似的事件,如:开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件.跟SAX不同的是, Pull解析器 ...

  9. Android(java)学习笔记130:Android中操作XML数据(使用Pull解析器)

    1. Pull解析器的运行方式与 SAX 解析器相似.它提供了类似的事件,如:开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件.跟SAX不同的是, Pull解析器 ...

  10. Android pull解析xml文件

    本文介绍android中使用pull来解析xml文件 先自己写一个xml文件,存一些天气信息 <?xml version="1.0" encoding="UTF-8 ...

随机推荐

  1. Python进阶之“属性(property)”详解

    Python中有一个被称为属性函数(property)的小概念,它可以做一些有用的事情.在这篇文章中,我们将看到如何能做以下几点: 将类方法转换为只读属性 重新实现一个属性的setter和getter ...

  2. c读写文件

    #include<stdio.h> void main(void) { // locate ]; scanf("%s", filename); getchar(); / ...

  3. netstat__stat

    1."man netstat" 查看 命令"netstat"的参数和打印信息的含义 2."netstat -awp" --> ZC: ...

  4. PHP 小方法之 显示 今天 昨天 上周 上月 近三月 的时间

    if(!function_exists('get_date_array')){ function get_date_array(){ $_NOW = time(); $today_begin = st ...

  5. easyui tree 折叠节点

    <ul id="jihuidian" class="easyui-tree" data-options="onBeforeLoad:functi ...

  6. ionic build android--> Build failed with an exception. Execution failed for task ':processDebugResources'.

    执行 ionic build android,   ionic 自动化生成安卓apk包, 出现以上报错的原因为:打包的文件中含有中文名,把中文名的文件去掉或改名即可打包成功.

  7. Retrofit 2.0使用

    最近在想能不能把之前项目里的网络请求改下 想通过Retrofit重构下,因为Retrofit完美兼容Rxjava后面会用到Rxjava 所以 开个坑写点 由于网上Retrofit 2.0的架构介绍很详 ...

  8. 002_kafka_相关术语详细解析

    参考: http://www.cnblogs.com/likehua/p/3999538.html http://kafka.apache.org/documentation.html#getting ...

  9. free函数

    free函数 原型: void free(void *ptr) 功 能: 释放ptr指向的存储空间.被释放的空间通常被送入可用存储区池,以后可在调用malloc.realloc以及calloc函数来再 ...

  10. 深入了解css的行高Line Height属性

    什么是行间距? 古时候我们使用印刷机来出来文字.印刷出来的每个字,都位于独立的一个块中. 行间距,即传说中控制两行文字垂直距离的东东.在CSS中,line-height被用来控制行与行之间垂直距离. ...