文档章节

pull解析器: 反序列化与序列化

Jusenr
 Jusenr
发布于 2016/05/17 00:45
字数 915
阅读 3
收藏 0

 

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

 

 1 import java.io.FileInputStream;
 2 import java.io.IOException;
 3 import java.util.ArrayList;
 4 import java.util.List;
 5 
 6 import org.xmlpull.v1.XmlPullParser;
 7 import org.xmlpull.v1.XmlPullParserException;
 8 import org.xmlpull.v1.XmlPullParserFactory;
 9 
10 public class ReadXmlTest {
11 
12     /**
13      *   pull解析器:反序列化     读取xml文件来获取一个对象的数据
14      * @param args
15      * @throws XmlPullParserException 
16      * @throws IOException 
17      */
18     public static void main(String[] args) throws XmlPullParserException, IOException {
19 
20         //1.导包
21         //2.获取解析器工厂
22         XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
23         //3.根据工厂获取解析器对象
24         XmlPullParser parser = factory.newPullParser();
25         //4.设置输入流
26         parser.setInput(new FileInputStream("src/student.xml"),"utf-8");
27         //5.解析
28         List<Student> list = null;
29         Student stu = null;
30         //获取对应时间的类型
31         int type = parser.getEventType(); 
32         while(type != XmlPullParser.END_DOCUMENT){
33             //获取标签名称
34             String tagname = parser.getName();
35             switch(type){
36             case XmlPullParser.START_TAG:
37                 //判断标签名称
38                 if("students".equals(tagname)){
39                     //创建集合
40                     list = new ArrayList<Student>();
41                 }else if("student".equals(tagname)){
42                     //创建对象
43                     stu = new Student();
44                     //获取ID属性值
45                     String id = parser.getAttributeValue(0);
46                     //赋值
47                     stu.setId(id);
48                 }else if("name".equals(tagname)){
49                     //获取标签体的文本
50                     String name = parser.nextText();
51                     //赋值
52                     stu.setName(name);
53                 }else if("age".equals(tagname)){
54                     //获取标签体的文本
55                     String age = parser.nextText();
56                     //赋值
57                     stu.setAge(Integer.parseInt(age));
58             }
59                 break;
60             case XmlPullParser.END_TAG:
61                 if("student".equals(tagname)){
62                     //将对象添加到集合中
63                     list.add(stu);
64                     stu = null;
65                 }
66                 break;
67             default:
68                 break;
69             }
70         //向下走一步
71         parser.next();
72         //重新赋值
73         type = parser.getEventType();
74         }
75         //6.输出
76         System.out.println(list);
77     }
78 }

 

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

 

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

 

 1 import java.io.FileOutputStream;
 2 import java.io.IOException;
 3 
 4 import org.xmlpull.v1.XmlPullParserException;
 5 import org.xmlpull.v1.XmlPullParserFactory;
 6 import org.xmlpull.v1.XmlSerializer;
 7 
 8 public class WriteXmlTest {
 9 
10     /**pull解析器:序列化   将一个对象的数据  写入到xml文件中
11      * @param args
12      * @throws XmlPullParserException 
13      * @throws IOException 
14      */
15     public static void main(String[] args) throws XmlPullParserException, IOException {
16 
17         Student stu = new Student("s_001", "小飞飞", 23);
18         //1.导包
19         //2.获取解析器工厂
20         XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
21         //3.根据工厂获取解析器对象
22         XmlSerializer serializer = factory.newSerializer();
23         //4.设置输出流
24         serializer.setOutput(new FileOutputStream("src/sss.xml"),"utf-8");
25         //5.写入
26         //5.1写文档声明  参数1:encoding属性值,参数2:standalone属性值
27         serializer.startDocument("utf-8", true);
28         //5.2写入开始跟标签
29         serializer.startTag(null, "students");
30         for(int i=0; i <5; i++){
31             //5.3写入student标签
32             serializer.startTag(null, "student");
33             
34             serializer.attribute(null, "id", stu.getId());
35             
36             serializer.startTag(null, "name");
37             serializer.text(stu.getName());
38             serializer.endTag(null, "name");
39             
40             serializer.startTag(null, "age");
41             serializer.text(String.valueOf(stu.getAge()));
42             serializer.endTag(null, "age");
43             
44             serializer.endTag(null, "student");
45         }
46         //5.4写入结束标签
47         serializer.endTag(null, "students");
48         //5.5写入结束文档
49         serializer.endDocument();
50         //反应结果
51         System.out.println("写入完成,请去查看!");
52     }
53 }

 

  Student类

 

 1 public class Student {
 2 
 3     private String id;
 4     private String name;
 5     private int age;
 6     
 7     public Student() {
 8         super();
 9     }
10     public Student(String id, String name, int age) {
11         super();
12         this.id = id;
13         this.name = name;
14         this.age = age;
15     }
16     /**
17      * @return the id
18      */
19     public String getId() {
20         return id;
21     }
22     /**
23      * @param id the id to set
24      */
25     public void setId(String id) {
26         this.id = id;
27     }
28     /**
29      * @return the name
30      */
31     public String getName() {
32         return name;
33     }
34     /**
35      * @param name the name to set
36      */
37     public void setName(String name) {
38         this.name = name;
39     }
40     /**
41      * @return the age
42      */
43     public int getAge() {
44         return age;
45     }
46     /**
47      * @param age the age to set
48      */
49     public void setAge(int age) {
50         this.age = age;
51     }
52     /* (non-Javadoc)
53      * @see java.lang.Object#toString()
54      */
55     @Override
56     public String toString() {
57         return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";
58     }
59 
60 }

 

  student.xml

 1 <?xml version='1.0' encoding='utf-8' ?>
 2 
 3 <students>
 4     <student id='s001'>
 5         <name>zhangsan</name>
 6         <age>23</age>
 7     </student>
 8         
 9     <student id="s002">
10         <name>lisi</name>
11         <age>24</age>
12     </student>
13 
14     <student id="s003">
15         <name>王五</name>
16         <age>25</age>
17     </student>
18     
19 </students>

 

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

  kxml2-2.3.0.jar

  xmlpull_1_1_3_4c.jar

 

本文转载自:http://www.cnblogs.com/rongsnow/p/5161324.html

共有 人打赏支持
Jusenr
粉丝 0
博文 20
码字总数 10876
作品 0
西安
Android工程师
【iOS】Plist-XML-JSON数据解析

网络上传输数据通用的有XML,JSON等,iOS中也可以用Plist。 要进行数据传输,就要首先进行序列化: 1.序列化. 对象转换成二进制流.(这个一句话就行) 2.反序列化. 二进制流转换为对象等. (关键...

xn4545945
2014/07/13
0
0
基于Json序列化和反序列化通用的封装

1. 最近项目已经上线了 ,闲暇了几天 想将JSON的序列化以及反序列化进行重新的封装一下本人定义为JSONHelp,虽然Microsoft 已经做的很好了。但是我想封装一套为自己开发的项目使用。方便后期...

zsdnr
2017/07/21
0
0
C 结构体与 JSON 互转库--struct2json

struct2json 是一个开源的C结构体与 JSON 快速互转库,它可以快速实现 结构体对象 与 JSON 对象 之间序列化及反序列化要求。快速、简洁的 API 设计,大大降低直接使用 JSON 解析库来实现此类...

armink
2015/11/13
2.4K
1
自己实现一个json解析器,代码提供出来

自己业余时间弄得的一个json解析器,提供json解析,序列化,反序列化的功能,只是基本的,可能还有很多bug没注意到,但是当个玩具,来给大家参考参考。 json反序列化: Mson mson=new Mson()...

jonathan_loda
2016/04/04
314
0
armink/struct2json

C结构体与 JSON 快速互转库 struct2json struct2json 是一个开源的C结构体与 JSON 快速互转库,它可以快速实现 结构体对象 与 JSON 对象 之间序列化及反序列化要求。快速、简洁的 API 设计,...

armink
2015/11/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

用户体验要素——以用户为设计中心

一、用户体验是什么 产品会与外界发生联系,人们如何去使用产品,人们使用产品无非解决两种问题,一,提高效率;二娱乐。而用户体验兼顾着功能和界面两个方面,为的是“提高人们的工作效率”...

铸剑为犁413
41分钟前
0
0
学习设计模式——代理模式

1. 认识代理模式 1. 定义:为其他对象提供一种代理以控制对这个对象的访问。 2. 组织结构: Proxy:代理对象,要实现与目标代理对象的相同的接口,这样就可以使用代理来代替具体的目标对象,...

江左煤郎
今天
1
0
java JDK动态代理

本篇随笔是对java动态代理中的JDK代理方式的具体实现。 首先需要定义一个接口,为其定义了两个方法:   public interface UserService { public void add(); public void delete(); } 然后需...

编程SHA
今天
2
0
轻松理解Dubbo分布式服务框架

Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的...

别打我会飞
今天
3
0
TypeScript基础入门之JSX(一)

转发 TypeScript基础入门之JSX(一) 介绍 JSX是一种可嵌入的类似XML的语法。 它旨在转换为有效的JavaScript,尽管该转换的语义是特定于实现的。 JSX在React框架中越来越受欢迎,但此后也看到了...

durban
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部