pull解析器:反序列化  读取xml文件来获取一个对象的数据

 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 ReadXmlTest { /**
* pull解析器:反序列化 读取xml文件来获取一个对象的数据
* @param args
* @throws XmlPullParserException
* @throws IOException
*/
public static void main(String[] args) throws XmlPullParserException, IOException { //1.导包
//2.获取解析器工厂
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
//3.根据工厂获取解析器对象
XmlPullParser parser = factory.newPullParser();
//4.设置输入流
parser.setInput(new FileInputStream("src/student.xml"),"utf-8");
//5.解析
List<Student> list = null;
Student stu = null;
//获取对应时间的类型
int type = parser.getEventType();
while(type != XmlPullParser.END_DOCUMENT){
//获取标签名称
String tagname = parser.getName();
switch(type){
case XmlPullParser.START_TAG:
//判断标签名称
if("students".equals(tagname)){
//创建集合
list = new ArrayList<Student>();
}else if("student".equals(tagname)){
//创建对象
stu = new Student();
//获取ID属性值
String id = parser.getAttributeValue(0);
//赋值
stu.setId(id);
}else if("name".equals(tagname)){
//获取标签体的文本
String name = parser.nextText();
//赋值
stu.setName(name);
}else if("age".equals(tagname)){
//获取标签体的文本
String age = parser.nextText();
//赋值
stu.setAge(Integer.parseInt(age));
}
break;
case XmlPullParser.END_TAG:
if("student".equals(tagname)){
//将对象添加到集合中
list.add(stu);
stu = null;
}
break;
default:
break;
}
//向下走一步
parser.next();
//重新赋值
type = parser.getEventType();
}
//6.输出
System.out.println(list);
}
}

------------------------------------------------------------------------------------------------

  pull解析器:序列化    将一个对象的数据  写入到xml文件中

 import java.io.FileOutputStream;
import java.io.IOException; import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
import org.xmlpull.v1.XmlSerializer; public class WriteXmlTest { /**pull解析器:序列化 将一个对象的数据 写入到xml文件中
* @param args
* @throws XmlPullParserException
* @throws IOException
*/
public static void main(String[] args) throws XmlPullParserException, IOException { Student stu = new Student("s_001", "小飞飞", 23);
//1.导包
//2.获取解析器工厂
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
//3.根据工厂获取解析器对象
XmlSerializer serializer = factory.newSerializer();
//4.设置输出流
serializer.setOutput(new FileOutputStream("src/sss.xml"),"utf-8");
//5.写入
//5.1写文档声明 参数1:encoding属性值,参数2:standalone属性值
serializer.startDocument("utf-8", true);
//5.2写入开始跟标签
serializer.startTag(null, "students");
for(int i=0; i <5; i++){
//5.3写入student标签
serializer.startTag(null, "student"); serializer.attribute(null, "id", stu.getId()); serializer.startTag(null, "name");
serializer.text(stu.getName());
serializer.endTag(null, "name"); serializer.startTag(null, "age");
serializer.text(String.valueOf(stu.getAge()));
serializer.endTag(null, "age"); serializer.endTag(null, "student");
}
//5.4写入结束标签
serializer.endTag(null, "students");
//5.5写入结束文档
serializer.endDocument();
//反应结果
System.out.println("写入完成,请去查看!");
}
}

  Student类

 public class Student {

     private String id;
private String name;
private int age; public Student() {
super();
}
public Student(String id, String name, int age) {
super();
this.id = id;
this.name = name;
this.age = age;
}
/**
* @return the id
*/
public String getId() {
return id;
}
/**
* @param id the id to set
*/
public void setId(String id) {
this.id = id;
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the age
*/
public int getAge() {
return age;
}
/**
* @param age the age to set
*/
public void setAge(int age) {
this.age = age;
}
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";
} }

  student.xml

 <?xml version='1.0' encoding='utf-8' ?>

 <students>
<student id='s001'>
<name>zhangsan</name>
<age>23</age>
</student> <student id="s002">
<name>lisi</name>
<age>24</age>
</student> <student id="s003">
<name>王五</name>
<age>25</age>
</student> </students>

导入的包名称(pull解析器jar包):

  kxml2-2.3.0.jar

  xmlpull_1_1_3_4c.jar

pull解析器: 反序列化与序列化的更多相关文章

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

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

  2. 通过pull解析器操作安卓的xml

    通过pull解析器操作安卓的xml 例子定义了一个javabean用于存放上面解析出来的xml内容, 这个javabean为Person,代码请见本页下面备注: =================== ...

  3. DRF 的 版本,解析器,与序列化

    DRF 的 版本,解析器,与序列化 补充 配置文件中的 类的调用: (字符串) v1 = ["view.xx.apth.Role","view.xx.apth.Role& ...

  4. 解析器组件和序列化组件(GET / POST 接口设计)

    前言 我们知道,Django无法处理 application/json 协议请求的数据,即,如果用户通application/json协议发送请求数据到达Django服务器,我们通过request.P ...

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

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

  6. 使用Pull解析器生成XML文件

    有些时候,我们需要生成一个XML文件,生成XML文件的方法有很多,如:可以只使用一个StringBuilder组拼XML内容,然后把内容写入到文件中:或者使用DOM API生成XML文件,或者也可以使 ...

  7. 无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)

    1.android下junit测试框架配置 单元测试需要在手机中进行安装测试 (1).在清单文件中manifest节点下配置如下节点 <instrumentation android:name= ...

  8. 安卓使用pull解析器解析XML文件

    学习一下: public class MainActivity extends Activity { List<City> cityList; @Override protected vo ...

  9. Pull解析器学习

    1, package com.service; import java.io.InputStream; import java.io.OutputStream; import java.util.Ar ...

随机推荐

  1. 远程管理 KVM 虚机 - 每天5分钟玩转 OpenStack(5)

    上一节我们通过 virt-manager 在本地主机上创建并管理 KVM 虚机.其实 virt-manager 也可以管理其他宿主机上的虚机.只需要简单的将宿主机添加进来 填入宿主机的相关信息,确定即 ...

  2. Hawk 数据抓取工具 使用说明(二)

    1. 调试模式和执行模式 1.1.调试模式 系统能够通过拖拽构造工作流.在编辑流的过程中,处于调试模式,为了保证快速地计算和显示当前结果(只显示前20个数据,可在调试的采样量中修改),此时,所有执行器 ...

  3. Rust初步(六):在C#中使用Rust组件

    上一篇文章,我们通过实例比较了一下C#和Rust的性能表现,应该说在Release模式下面,Rust进行计算密集型的运算还是有些比较明显的优势的.那么,我们有没有可能,在C#中做一些快速应用开发,而一 ...

  4. 如何用C#代码判断一个类的类型

     var s = "";  s.GetType().IsClass; 来自为知笔记(Wiz)

  5. geotrellis使用(六)Scala并发(并行)编程

    本文主要讲解Scala的并发(并行)编程,那么为什么题目概称geotrellis使用(六)呢,主要因为本系列讲解如何使用Geotrellis,具体前几篇博文已经介绍过了.我觉得干任何一件事情基础很重要 ...

  6. 开发中 常用 js 记录(一)

    (1)获得URL参数 function GetQueryString("url参数名") {     var reg = new RegExp("(^|&)&qu ...

  7. Hibernate之HQL查询的一些例子

    Hibernate配备了一种非常强大的查询语言,就是HQL(hibernate query language),HQL看上去很像sql,但只是语法结构上相似,HQL是一种面向对象的查询,他可以理解继承 ...

  8. C#设置文件权限

    在开发中,我们经常会使用IO操作,例如创建,删除文件等操作.在项目中这样的需求也较多,我们也会经常对这些操作进行编码,但是对文件的权限进行设置,这样的操作可能会手动操作,现在介绍一种采用代码动态对文件 ...

  9. $\LaTeX$笔记:首字下沉

    $\LaTeX$系列根目录: Latex学习笔记-序 首字下沉 \IEEEPARstart{W}{ith} ,第一个参数W会变大,占用两行,第二个参数”ith”变会大写. 如代码 \IEEEPARst ...

  10. 基于sticky组件,实现带sticky效果的tab导航和滚动导航

    上文提供了一个改进版的sticky组件,并将演示效果应用到了自己的博客.有了类似sticky的这种简单组件,我们就可以在利用它开发更丰富的效果,比如本文要介绍的tab导航和滚动导航.实现简单,演示效果 ...