摘要:将Java对象序列化成XML格式,将XML反序列化还原为Java对象。

一:创建Maven工程,引入xstream依赖:

<!--xstream--><dependency><groupId>com.thoughtworks.xstream</groupId><artifactId>xstream</artifactId><version>1.4.4</version></dependency>

二:创建Java序列化为XML格式、XML反序列化为Java对象的类:

package cn.micai.base.io;import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;import java.io.IOException;/*** @Auther: zhaoxinguo* @Date: 2018/8/23 10:48* @Description: 将Java对象序列化成XML格式,将XML反序列化还原为Java对象*/
public class XmlSerializeDeserializeMain {/*** 将Java对象序列化成XML格式* @param employee* @return* @throws IOException*/public static String serialize(Employee employee){// 将employee对象序列化为XMLXStream xStream = new XStream(new DomDriver());// 设置employee类的别名xStream.alias("employee", Employee.class);String personXml = xStream.toXML(employee);return personXml;}/*** 将XML反序列化还原为Java对象* @param personXml* @return*/public static Employee deserialize(String personXml) {// 将employee对象序列化为XMLXStream xStream = new XStream(new DomDriver());Employee employee = (Employee) xStream.fromXML(personXml);return employee;}public static void main(String [] args) {Employee employee = new Employee();employee.setEmployeeId(1);employee.setEmployeeName("赵新国");employee.setDepartment("软件工程师");// 序列化String serialize = serialize(employee);System.out.println(serialize);// 反序列化Employee deserialize = deserialize(serialize);System.out.println(deserialize.toString());}}

三:创建Employee实体对象

package cn.micai.base.io;import java.io.Serializable;/*** 描述:* <p>**     transient使用小结*     1.一旦变量被transient修饰,变量将不再是对象持久化的一部分,该变量内容在序列化后无法获得访问。*     2.transient关键字只能修饰变量,而不能修饰方法和类。注意,本地变量是不能被transient关键字修饰的。变量如果是用户自定义类变量,则该类需要实现Serializable接口。*     3.被transient关键字修饰的变量不再能被序列化,一个静态变量不管是否被transient修饰,均不能被序列化。** @author: 赵新国* @date: 2018/6/7 12:10*/
public class Employee implements Serializable {private static final long serialVersionUID = 1L;private int employeeId;private String employeeName;/*** 使用transient关键字,表示该字段不序列化*/private transient String department;public int getEmployeeId() {return employeeId;}public void setEmployeeId(int employeeId) {this.employeeId = employeeId;}public String getEmployeeName() {return employeeName;}public void setEmployeeName(String employeeName) {this.employeeName = employeeName;}public String getDepartment() {return department;}public void setDepartment(String department) {this.department = department;}@Overridepublic String toString() {return "Employee{" +"employeeId=" + employeeId +", employeeName='" + employeeName + '\'' +", department='" + department + '\'' +'}';}
}

四:运行测试:

五:异常提醒:

上面的异常信息说明了,在解析XML的时候,找不到对应的实体对象,所以会报上面的错误,那我们就在解析的时候,告诉xStream,是解析那个对象,修改解析XML代码如下:

/*** 将XML反序列化还原为Java对象* @param personXml* @return*/public static Employee deserialize(String personXml) {// 将employee对象序列化为XMLXStream xStream = new XStream(new DomDriver());xStream.alias("employee", Employee.class);Employee employee = (Employee) xStream.fromXML(personXml);return employee;}

六:最终运行结果:

将Java对象序列化成XML格式,将XML反序列化还原为Java对象相关推荐

  1. 对象序列化成JSON格式

    json是一种轻量级的数据交换语言,将对象序列化为json格式,可以在网络上传输,且各个平台都有成熟的工具,可以很快的将json反序列化为对应语言所需要的格式. 将java对象序列化为json格式关键 ...

  2. java 序列化成xml文件_将Java对象序列化成JSON和XML格式

    1.先定义一个Java对象Person: public class Person { String name; int age; int number; public String getName() ...

  3. Java对象序列化乱码6_对象序列化成字符串乱码解决

    问题描述: 将一个对象序列化成字符串后,字符串是乱码的,并且反序列化报错. 代码如下: import com.alibaba.fastjson.JSONObject; import org.sprin ...

  4. ISerializable与BinaryFormatter配合,实现将对象序列化成stream,可以保存或网络传输与反序列化

    C#中ISerializable与BinaryFormatter配合,可以实现将对象序列化成stream,进而可以保存或网络传输以及进行反序列化. (注意: 这是一个年代久远了的知识点!) 以下是网上 ...

  5. XmlSerializer 对象序列化成XML 自定义编码格式(gb2312)

    随着面向服务(SOA)的开发方式的兴起,客户端和服务端之间的消息传送,很多采用了XML的格式.但是大家在日常的开发中,应该会有这么种体验,就是组织xml格式的代码太繁琐,这篇随笔也是为了和大家分享下简 ...

  6. java接口返回xml格式_Java xml数据格式返回实现操作

    前言:对于服务器后端开发,接口返回的数据格式一般要求都是json,但是也有使用xml格式 RequestBody注解 对于SpringMVC,很多人会认为接口方法使用@Controller搭配@Res ...

  7. 将python对象序列化成php能读取的格式(即能反序列化到对象)

    转载自:http://my.oschina.net/zuoan001/blog/94914 代码如下: #coding:utf-8 # vim: encoding=utf-8:ft=python:et ...

  8. C#实现对象的Xml格式序列化及反序列化

    要序列化的对象的类: [Serializable] public class Person { private string name; public string Name { get { retu ...

  9. com.fasterxml.jackson将对象序列化成json时,出现在json里的属性名称是怎么来的

    如果不考虑用任何annotation指定出现在json string里的属性名称的话,默认的逻辑是将getter方法里,"get"之后的字符串的首字母小写. 比如: getJerD ...

最新文章

  1. java 局部内部类的理解
  2. Windows远程连接的实现
  3. pyrealsense2 设置摄像头曝光值 get_active_profile.get_device().query_sensors set_option() rs.option.exposure
  4. 五、开始学习Excel函数,效率快速提高
  5. linux下编译安装MySQL5.6新版本
  6. Green Plum测试报告
  7. mysql的压缩版安装
  8. restful levelsHATEOAS
  9. 《上海交通大学饮水思源paper(论文)板实用手册(第二版)》出炉
  10. 小程序:canvas绘制网络图片
  11. mysql的升序和降序
  12. linux cpufreq 设置
  13. 毕业设计-校园招聘系统
  14. 计算机网络的发展过程大致可以分为几个,计算机网络发展过程分几个阶段
  15. DDSM数据库转换图像格式——LJPEG转为PNG格式
  16. Web Audio API与WebSocket播放实时音频
  17. 校园生活旅游娱乐vlog篇
  18. Disruptor并发框架,核心组件RingBuffer
  19. java资产管理系统开源_Java固定资产管理系统源代码
  20. mysql创建三个表相互关联_mysql – 在三个表之间创建关系

热门文章

  1. 计算机网络之百个为什么?[期末简答必记]
  2. available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations
  3. python发送邮件(smtplib、email、zmail)
  4. 吐血整理MapStruct
  5. 【imessage苹果群发】apple推送技术开源需求源代码编写,IMESSage-VM插件
  6. React实现动态展示柱状图
  7. ASO提升App Store排名的8个技巧
  8. android 仿qq手写板涂鸦
  9. 微信小程序模板消息41003 page路径错误解决办法
  10. 无法安装linux系统安装驱动,我就纳闷了,Linux下Nvidia显卡驱动一直安装失败