之前讲了fastjson的使用–将JavaBean与json对象之间互相转换。

该篇文章,教大家使用Xstream来实现XMl与JavaBean的转换。

第一步:

通过maven引入XStream的jar包。

<!-- https://mvnrepository.com/artifact/com.thoughtworks.xstream/xstream -->
<dependency><groupId>com.thoughtworks.xstream</groupId><artifactId>xstream</artifactId><version>1.3.1</version>
</dependency>

第二步:

准备一个需要序列化和反序列化的类:

注:

1.该类必须有无参的构造函数,否则报错:Cannot construct com.claire.jing.test0811.Student as it does not have a no-args constructor

2.该类 implements Serializable ,这个接口仅仅是标识作用,写上只是标识该类是可以被序列化和反序列化的。

public class Student implements Serializable {private int id;private String name;private String school;public Student() {// TODO Auto-generated constructor stub}public Student(int id, String name, String school) {super();this.id = id;this.name = name;this.school = school;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSchool() {return school;}public void setSchool(String school) {this.school = school;}@Overridepublic String toString() {return "Student [id=" + id + ", name=" + name + ", school=" + school + "]";}
}

第三步:使用XStream来实现该类的序列化和反序列

public class SerializeXml {public static void main(String[] args) {serializeToXml();     System.out.println("**************************************");deserialize();}public static void serializeToXml() {FileOutputStream write = null;Student stu1 = new Student(10003, "claire", "hh");Student stu2 = new Student(10004, "leafly", "hh");Student[] students = {stu1,stu2};XStream xstream = new XStream();try {        //将文流怼到文件上write = new FileOutputStream("F:/myObjtoXml.txt");        //将学生对象序列化成Xml并通过流写入到文件中xstream.toXML(students, write);} catch (FileNotFoundException e) {e.printStackTrace();}//将序列化结果输出System.out.println(xstream.toXML(students));}public static void deserialize() {FileInputStream reader;XStream xstream = new XStream();Student[] students=null;try {reader = new FileInputStream("F:/myObjtoXml.txt");        //将Xml文件反序列化为Student对象students=(Student[])xstream.fromXML(reader);if (students != null) {for (Student student : students) {System.out.println(student);}}} catch (FileNotFoundException e) {e.printStackTrace();}}
}

上面程序的输出结果为:

<com.claire.jing.test0811.Student-array>
<com.claire.jing.test0811.Student>
<id>10003</id>
<name>claire</name>
<school>hh</school>
</com.claire.jing.test0811.Student>
<com.claire.jing.test0811.Student>
<id>10004</id>
<name>leafly</name>
<school>hh</school>
</com.claire.jing.test0811.Student>
</com.claire.jing.test0811.Student-array>
**************************************
Student [id=10003, name=claire, school=hh]
Student [id=10004, name=leafly, school=hh]

上面都是最简单的序列化和反序列化的格式:

1.当Xml中有属性的时候,如:

<student age="15">

使用上面的反序列化就会报错,此时只要加上:
xstream.useAttributeFor(Student.class, “age”);

2.序列化出来的xml文件中,都带有包名,如果不想让其显示类全名,只要给该类起个别名即可:
xstream.alias(“student”, Student.class);

序列化反序列化--Xstream的使用相关推荐

  1. 用 XStream 序列化/反序列化 XML 为 Java 对象(实例)

    用 XStream 序列化/反序列化 XML 为 Java 对象(实例) Posted on 2007-06-05 19:06 Stephen Wong 阅读(1224) 评论(0)  编辑 收藏 网 ...

  2. Java 序列化反序列化框架比较

    文章目录 一.简介 二.序列化框架 1.JDK 2.XML序列化 3.JSON序列化 4.Hessian 5.Avro序列化 6.Kyro序列化 7.Protostuff 三.序列化框架对比测试 1. ...

  3. Redis Template使用append方法不起作用的解决办法以及序列化/反序列化的解释

    今天使用Redis Template进行测试发现的问题, 遇到这个错 org.springframework.data.redis.serializer.SerializationException: ...

  4. 序列化反序列化api(入门级)

    定义: java序列化是指把Java对象转换为字节序列的过程:而Java反序列化是指把字节序列恢复为Java对象的过程. 为什么字符串通常也会进行序列化? 对象需要进行序列化的原因:保证对象的状态不变 ...

  5. 敏捷中gwt含义_在GWT中序列化/反序列化Json

    敏捷中gwt含义 JSON和GWT 最近, GWT用户小组中进行了有趣的讨论 ,涉及在客户端对JSON进行序列化/反序列化的最佳实践. 这篇文章旨在突出其重点. 到目前为止,在GWT中有三种将对象转换 ...

  6. 在GWT中序列化/反序列化Json

    JSON和GWT 最近, GWT用户小组中进行了有趣的讨论 ,涉及在客户端对JSON进行序列化/反序列化的最佳实践. 这篇文章旨在突出其重点. 到目前为止,在GWT中有三种将对象转换为JSON并从客户 ...

  7. 高效的序列化/反序列化数据方式 Protobuf

    高效的序列化/反序列化数据方式 Protobuf github地址 目录 protocolBuffers 序列化 Int32 String Map slice 序列化小结 protocolBuffer ...

  8. 10.8-全栈Java笔记:序列化/反序列化的步骤和实例

    本节我们详细讲解10.3节中提到的序列化和反序列化操作. 序列化和反序列化是什么 当两个进程远程通信时,彼此可以发送各种类型的数据. 无论是何种类型的数据,都会以二进制序列的形式在网络上传送.比如,我 ...

  9. 【Java】用Jackson进行JSON序列化/反序列化操作

    Java类和JSON Speaker类: import java.util.ArrayList; import java.util.Arrays; import java.util.List;publ ...

最新文章

  1. 吴琦:AI研究一路走到“黑”, 从VQA到VLN
  2. “从客户端中检测到有潜在危险的 Request.Form 值“的解决方案汇总
  3. 能被选为2021最佳开源项目的WEB框架究竟有多棒?
  4. LAMP介绍-MySQL安装
  5. java字符串最长回文串_Java中的字符串回文程序
  6. Java多线程学习二十二:为什么 Map 桶中超过 8 个才转为红黑树
  7. 有“嗅觉”的电脑:英特尔神经拟态芯片能嗅出危险化学品气味
  8. python3 常见命令_vortex_新浪博客
  9. fanuc机器人与示教器配对_阳江Fanuc机器人示教器维修中心
  10. c语言实现http下载功能
  11. 【哪些年,我们一起追的女孩】第五章
  12. Apollo-阿波罗配置中心详细使用教程
  13. 获取json文件中的URL
  14. 超好用的电脑浏览器广告去除拓展工具
  15. 游龙传说服务器维护,游龙传说应用宝预约_游龙传说手游应用宝预约v1.0.0_第一手游网...
  16. 日记500字初中计算机课,日记500字初中日常生活
  17. 在线生成条形码的解决方案(39码、EAN-13)
  18. 摩杜云亮相CDEC2021中国数字智能生态大会,始终专注云+数据
  19. 齐治堡垒机后台存在命令执行漏洞(CNVD-2019-17294)分析
  20. Houdini 如何加材质贴图

热门文章

  1. textarea在IE中和FF下不同的效果
  2. MACOS-Can't-connect-to-local-MySQL-server-through-socket-'/tmp/mysql.sock'
  3. AspNetCore中使用Ocelot之 IdentityServer4(1)
  4. pat 1074. 宇宙无敌加法器(20)
  5. 微信开发 调用摄像机拍照(录像)功能
  6. [BZOJ]1055: [HAOI2008]玩具取名
  7. java解析XML大全(转)
  8. 用jQuery的ajax的功能实现输入自动提示的功能
  9. 记录一次解决404问题
  10. 解决jquery之get缓存问题的最简单方法