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 ...
随机推荐
- ASP.NET Core的配置(4):多样性的配置来源[下篇]
我们在上篇和中篇对配置模型中默认提供的各种ConfigurationProvider进行了深入详尽的介绍,如果它们依然不能满足项目中的配置需求,我们可以还可以通过自定义ConfigurationPro ...
- 手动实现jQuery Tools里面tab功能
平时开发中用的Javascript类库都是jQuery,用到插件或者第三方类库能从jQuery Tools里面找到,基本不用其他的.当然有时同事喜欢使用jQuery UI里面的插件.并且jQuery ...
- YII 的源码分析(二)
上一篇简单分析了一下yii的流程,从创建一个应用,到屏幕上输出结果.这一次我来一个稍复杂一点的,重点在输出上,不再是简单的一行"hello world",而是要经过view(视图) ...
- 安装ClouderaManager以及使用ClouderaManager安装分布式集群的若干细节
目录 前言 整体介绍 分步安装介绍 总结 一.前言 周末干了近四十个小时中间只休息了五个小时终于成功安装了ClouderaManager以及分布式集群,其中各种辛酸无以言表,唯有泪两行. ...
- grape动态PHP结构(二)——管理后台
一.概述
- ng1和ng2的部分对比----angular2系列(四)
前言: angular2相比angular1做了革命性的改变.对于开发者来说,我们知道它框架的实现上改变极大.我们看到代码也能发现它写法上变化很大,似乎完全是另一个东西. 但是当我们真正去写下去的时候 ...
- 探秘Tomcat——从一个简陋的Web服务器开始
前言: 无论是之前所在实习单位小到一个三五个人做的项目,还是如今一个在做的百人以上的产品,一直都能看到tomcat的身影.工作中经常遇到的操作就是启动和关闭tomcat服务,或者修改了摸个java文件 ...
- 请求facebook授权时,返回错误
在请求facebook授权时,返回如下错误:所提供的网址不被应用程序配置所接纳.:应用程序的设置不允许一个或多个所提供的链接.它必须与网站的URL或Canvas的URL相符,或该域必须是应用程序的一个 ...
- jQuery的$.getJSON方法在IE浏览器下失效的解决方案
$.getJSON在IE下默认会使用浏览器缓存,所以导致数据不正确或者异常,解决方案就是在使用该方法前关闭缓存,使用完后再重新打开缓存即可. <?php $.ajaxSetup({ cache: ...
- 微信小程序:原生热布局终将改变世界
关于本文的所有观点都是网上收集,与作者本人没有任何关系! 最近朋友圈已经被微信小程序刷屏了,这也难怪,腾讯的产品拥有广泛的影响力,谁便推出个东西,都会有很多人认为会改变世界,这不,张小龙刚一发布微信小 ...