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 ...
随机推荐
- 微信小程序文件作用域模块引用
文件作用域 在 JavaScript 文件中声明的变量和函数只在该文件中有效:不同的文件中可以声明相同名字的变量和函数,不会互相影响. 通过全局函数 getApp() 可以获取全局的应用实例,如果需要 ...
- Http 状态码对照表
1xx 消息 1. 100 Continue 2. 101 Switching Protocol 3. 102 Processing 2xx 成功 1. 200 OK ...
- C#位运算讲解与示例2
在C#中可以对整型运算对象按位进行逻辑运算.按位进行逻辑运算的意义是:依次取被运算对象的每个位,进行逻辑运算,每个位的逻辑运算结果是结果值的每个位.C#支持的位逻辑运算符如表2.9所示. 运算符号 意 ...
- mac 安装 nginx 环境
1.brew search nginx 2.brew install nginx 启动nginx ,sudo nginx ;访问localhost:8080 发现已出现nginx的欢迎页面了. 备注: ...
- Mac 在命令行中获得Root权限
Mac 在命令行中获得Root权限 作者 firedragonpzy 13 九月, 2012 2条评论 本文为firedragonpzy原创,转载务必在明显处注明:转载自[Softeware MyZo ...
- PHP 小方法之 算生日
if (! function_exists ( 'diff_date' )) { function diff_date($date1, $date2){ $datestart = date ( 'Y- ...
- java mail发送邮件
最近做了自动发送邮件功能,带附件的:需要的jar包有
- mysqld_safe启动报错 mysqld_safe The file /usr/local/mysql/bin/mysqld does not exist or is not executable
报错(如下),但是使用mysqld直接启动没有问题. 150718 00:03:38 mysqld_safe Logging to '/var/log/mysqld.log'. 150718 00:0 ...
- Spirng中Mongodb中write-concern的解释
Spring在插入数据库时没有返回状态配置:write-concern获取异常<beans xmlns="http://www.springframework.org/schema/b ...
- ARM汇编程序基本知识
ARM汇编程序基本知识 1.汇编程序的基本组成 ARM汇编语言程序中,程序是以程序段为单位组织代码的.段是相对独立的指令或者代码序列,拥有特定的名称.段的种类有代码段.数据段和通用段,代 码段的内容为 ...