pull解析器: 反序列化与序列化
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解析器: 反序列化与序列化的更多相关文章
- Android(java)学习笔记187:Android中操作XML数据(使用Pull解析器)
1. Pull解析器的运行方式与 SAX 解析器相似.它提供了类似的事件,如:开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件.跟SAX不同的是, Pull解析器 ...
- 通过pull解析器操作安卓的xml
通过pull解析器操作安卓的xml 例子定义了一个javabean用于存放上面解析出来的xml内容, 这个javabean为Person,代码请见本页下面备注: =================== ...
- DRF 的 版本,解析器,与序列化
DRF 的 版本,解析器,与序列化 补充 配置文件中的 类的调用: (字符串) v1 = ["view.xx.apth.Role","view.xx.apth.Role& ...
- 解析器组件和序列化组件(GET / POST 接口设计)
前言 我们知道,Django无法处理 application/json 协议请求的数据,即,如果用户通application/json协议发送请求数据到达Django服务器,我们通过request.P ...
- Android(java)学习笔记130:Android中操作XML数据(使用Pull解析器)
1. Pull解析器的运行方式与 SAX 解析器相似.它提供了类似的事件,如:开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件.跟SAX不同的是, Pull解析器 ...
- 使用Pull解析器生成XML文件
有些时候,我们需要生成一个XML文件,生成XML文件的方法有很多,如:可以只使用一个StringBuilder组拼XML内容,然后把内容写入到文件中:或者使用DOM API生成XML文件,或者也可以使 ...
- 无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)
1.android下junit测试框架配置 单元测试需要在手机中进行安装测试 (1).在清单文件中manifest节点下配置如下节点 <instrumentation android:name= ...
- 安卓使用pull解析器解析XML文件
学习一下: public class MainActivity extends Activity { List<City> cityList; @Override protected vo ...
- Pull解析器学习
1, package com.service; import java.io.InputStream; import java.io.OutputStream; import java.util.Ar ...
随机推荐
- 跟我学Angular2(1-初体验)
0.导言 Angular1作为最流行的前端MV*框架,给前端开发带来了极大的便利性.但是,仍然有许多不好的地方已经很难再改变了.Angular团队根据WEB发展的趋势和Angular1中积累的经验来开 ...
- Oracel_子查询
SQL子查询 子查询语法 SELECT select_list FROM table WHERE expr operator (SELECT select_list FROM table) 子查询 ( ...
- 你需要知道的包管理器(Package Manager)
最近我花了一点时间关注了在不同系统之中所用到的包管理器(Package Manager) .最开始的时候,我是在使用Linux操作系统时,对这种工具以及它背后的想法深深迷恋住了:这真是自由的软件世界. ...
- jsonp跨域+ashx(示例)
前言 做B/S项目的时候,我们一般使用jquery+ashx来实现异步的一些操作,比如后台获取一些数据到前台,但是如果ashx文件不在本项目下,引用的是别的域下的文件,这时候就访问不了.关于jsonp ...
- 计时器StopWatch示例
计时器 StopWatch stwatch = new StopWatch(getClass().getSimpleName()); try{ stwatch.start(joinPoint.getS ...
- C# 复制一个Word文档的部分或全部内容到另一个Word文档
C# 复制一个Word文档的部分或全部内容到另一个Word文档 我最近喜欢折腾Office软件相关的东西,想把很多Office软件提供的功能用.NET来实现,如果后期能把它用来开发一点我自己的小应用程 ...
- 【JUC】JDK1.8源码分析之CyclicBarrier(四)
一.前言 有了前面分析的基础,现在,接着分析CyclicBarrier源码,CyclicBarrier类在进行多线程编程时使用很多,比如,你希望创建一组任务,它们并行执行工作,然后在进行下一个步骤之前 ...
- 实战 ASP.NET Web API
Web API 框架是一个面向 Http 协议的通信框架.相对于 WCF 而言,Web API 只面向于 Http 协议设计,而且没有 WCF 那么繁琐的配置.Web API 的开发类似于 ASP.N ...
- MapReduce Shuffle过程
MapReduce Shuffle 过程详解 一.MapReduce Shuffle过程 1. Map Shuffle过程 2. Reduce Shuffle过程 二.Map Shuffle过程 1. ...
- EF架构~EF异步改造之路~仓储接口的改造
回到目录 返回异步与并行目录 C#5.0带来了并行编程 {C#1.0托管代码→C#2.0泛型→C#3.0LINQ→C#4.0动态语言→C#5.0异步编程} 随着C#5.0在.net4.5出来之后,它们 ...