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 ...
随机推荐
- MySQL学习笔记十二:数据备份与恢复
数据备份 1.物理备份与逻辑备份 物理备份 物理备份就是将数据库的数据文件,配置文件,日志文件等复制一份到其他路径上,这种备份速度一般较快,因为只有I/O操作.进行物理备份时,一般都需要关闭mysql ...
- MySQL监控利器-Innotop
Innotop是一款十分强大的MySQL监控工具,用perl所写,通过文本模式展示MysQL服务器和Innodb的运行状况. 安装innotop 下载地址:https://github.com/inn ...
- C算法编程题系列
我的编程开始(C) C算法编程题(一)扑克牌发牌 C算法编程题(二)正螺旋 C算法编程题(三)画表格 C算法编程题(四)上三角 C算法编程题(五)“E”的变换 C算法编程题(六)串的处理 C算法编程题 ...
- 项目中遇到的Integer问题--转
Integer类型值相等或不等分析 http://www.cnblogs.com/zzllx/p/5778470.html 看到博客园一位博友写的面试问题,其中一题是 Integer a = 1; I ...
- PHP中MySQL操作
本次使用的demo是MySQL的示例数据库employees,点击下载地址,注意在导入的时候,在employees.sql文件中,将source改成你当前的目录. PHP中的demo代码可以在ideo ...
- ZOJ Problem Set - 1338 Up and Down Sequences 解释 ac代码
这道题目我一开始一头雾水,怎么都数不对,参考了下网上的博文,才弄懂. 题意是这样的,如果是上升序列,上升序列的长度不是所有上升数字的,是这么规定的,如果它与前一个数字构成上升,那么这个数字算上长度.所 ...
- C#二进制流的序列化和反序列化
public class BinaryHelper { /// <summary> /// 将对象序列化为byte[] /// 使用IFormatter的Serialize序列化 /// ...
- java.lang.OutOfMemoryError:GC overhead limit exceeded填坑心得
我遇到这样的问题,本地部署时抛出异常java.lang.OutOfMemoryError:GC overhead limit exceeded导致服务起不来,查看日志发现加载了太多资源到内存,本地的性 ...
- [Asp.net 5] Localization-简单易用的本地化
本地化也叫国际化,就是做多语言程序时,可以一键式将当前语言切换到另外一种语言.对于跨国企业或者和国外有业务往来的公司特别重要:就算一个普通公司的门户如果支持中.英.繁体,也会让人觉得高大上.有没有呀, ...
- 【C#公共帮助类】给大家分享一些加密算法 (DES、HashCode、RSA、AES等)
AES 高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的 ...