1. package com.lss.utils;
  2. import java.beans.XMLDecoder;
  3. import java.beans.XMLEncoder;
  4. import java.io.BufferedInputStream;
  5. import java.io.BufferedOutputStream;
  6. import java.io.ByteArrayInputStream;
  7. import java.io.ByteArrayOutputStream;
  8. /**
  9. * JAVA序列化和反序列化XML
  10. * <p>
  11. * 属性是包括getter,setter属性生成, 序列化的类必须包括一个公共无參构造函数。
  12. * </p>
  13. *
  14. * @author kevin LUAN
  15. *
  16. */
  17. public class SerializableXmlUtils {
  18. @SuppressWarnings("unchecked")
  19. public static <T> T parserXML(String xml) {
  20. ByteArrayInputStream in = new ByteArrayInputStream(xml.getBytes());
  21. XMLDecoder decoder = new XMLDecoder(new BufferedInputStream(in));
  22. decoder.close();
  23. return (T) decoder.readObject();
  24. }
  25. public static <T> String formatXML(T entity) {
  26. ByteArrayOutputStream out = new ByteArrayOutputStream();
  27. XMLEncoder encoder = new XMLEncoder(new BufferedOutputStream(out));
  28. encoder.writeObject(entity);
  29. encoder.close();
  30. return out.toString();
  31. }
  32. public static void main(String[] args) throws Exception {
  33. User user = new User();
  34. user.setId(1);
  35. user.setName("张三丰");
  36. user.setAihao(new String[] { "篮球", "足球" });
  37. user.setStudent(new Student(1, "二年级"));
  38. String xml = formatXML(user);
  39. System.out.println("序列化到XML:\n" + xml);
  40. user = parserXML(xml);
  41. System.out.println("反序列化Bean:\n" + user);
  42. }
  43. }

# 測试Bean Code

  1. package com.lss.utils;
  2. import java.util.Arrays;
  3. public class User {
  4. private int id;
  5. private String name;
  6. private Student student;
  7. private String aihao[];
  8. @Override
  9. public String toString() {
  10. return "{id:" + id + ",name:" + name + ",student:" + student + ",aihao:" + Arrays.toString(aihao) + "}";
  11. }
  12. public Student getStudent() {
  13. return student;
  14. }
  15. public void setStudent(Student student) {
  16. this.student = student;
  17. }
  18. public int getId() {
  19. return id;
  20. }
  21. public void setId(int id) {
  22. this.id = id;
  23. }
  24. public String getName() {
  25. return name;
  26. }
  27. public void setName(String name) {
  28. this.name = name;
  29. }
  30. public String[] getAihao() {
  31. return aihao;
  32. }
  33. public void setAihao(String[] aihao) {
  34. this.aihao = aihao;
  35. }
  36. }
  1. package com.lss.utils;
  2. public class Student {
  3. private int classId;
  4. private String level;
  5. public Student() {
  6. }
  7. public Student(int classId, String level) {
  8. this.classId = classId;
  9. this.level = level;
  10. }
  11. public int getClassId() {
  12. return classId;
  13. }
  14. public void setClassId(int classId) {
  15. this.classId = classId;
  16. }
  17. public String getLevel() {
  18. return level;
  19. }
  20. public void setLevel(String level) {
  21. this.level = level;
  22. }
  23. @Override
  24. public String toString() {
  25. return "{classId:" + classId + ",level:" + level + "}";
  26. }
  27. }

#执行測试结果:

序列化到XML:

  1. <?
  2. xml version="1.0" encoding="UTF-8"?
  3. >
  4. <java version="1.7.0_45" class="java.beans.XMLDecoder">
  5. <object class="com.koudai.laohuji.service.User">
  6. <void property="aihao">
  7. <array class="java.lang.String" length="2">
  8. <void index="0">
  9. <string>篮球</string>
  10. </void>
  11. <void index="1">
  12. <string>足球</string>
  13. </void>
  14. </array>
  15. </void>
  16. <void property="id">
  17. <int>1</int>
  18. </void>
  19. <void property="name">
  20. <string>张三丰</string>
  21. </void>
  22. <void property="student">
  23. <object class="com.koudai.laohuji.service.Student">
  24. <void property="classId">
  25. <int>1</int>
  26. </void>
  27. <void property="level">
  28. <string>二年级</string>
  29. </void>
  30. </object>
  31. </void>
  32. </object>
  33. </java>

反序列化Bean:

{id:1,name:张三丰,student:{classId:1,level:二年级},aihao:[篮球, 足球]}

JAVA序列化和反序列化XML的更多相关文章

  1. Java序列化与反序列化(实践)

    Java序列化与反序列化(实践) 基本概念:序列化是将对象状态转换为可保持或传输的格式的过程.与序列化相对的是反序列化,它将流转换为对象.这两个过程结合起来,可以轻松地存储和传输数据. 昨天在一本书上 ...

  2. (记录)Jedis存放对象和读取对象--Java序列化与反序列化

    一.理论分析 在学习Redis中的Jedis这一部分的时候,要使用到Protostuff(Protobuf的Java客户端)这一序列化工具.一开始看到序列化这些字眼的时候,感觉到一头雾水.于是,参考了 ...

  3. Java序列化与反序列化

    Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java序列化与反序列化?本文围绕这些问题进行了探讨. 1.Java序列化与反序列化 Java序列化是指把Java对象转换为字节序列 ...

  4. [转] Java序列化与反序列化

    原文地址:http://blog.csdn.net/wangloveall/article/details/7992448 Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java ...

  5. Java序列化与反序列化(Serializable)

    Java序列化与反序列化(Serializable) 特别注意: 1.要序列化的类必须实现Serializable借口 2.在反序列化(读取对象)的时候必须额外捕获EOFException 3.序列化 ...

  6. Java基础(五)-Java序列化与反序列化

    .output_wrapper pre code { font-family: Consolas, Inconsolata, Courier, monospace; display: block !i ...

  7. java序列化与反序列化(转)

    Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java序列化与反序列化?本文围绕这些问题进行了探讨. 1.Java序列化与反序列化 Java序列化是指把Java对象转换为字节序列 ...

  8. Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java序列化与反序列化?

    Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java序列化与反序列化?本文围绕这些问题进行了探讨.  1.Java序列化与反序列化  Java序列化是指把Java对象转换为字节 ...

  9. Java序列化与反序列化三连问:是什么?为什么要?如何做?

    Java序列化与反序列化是什么? Java序列化是指把Java对象转换为字节序列的过程,而Java反序列化是指把字节序列恢复为Java对象的过程: 序列化:对象序列化的最主要的用处就是在传递和保存对象 ...

随机推荐

  1. 浅谈select for update 和select lock in share mode的区别

    有些情况下为了保证数据逻辑的一致性,需要对SELECT的操作加锁.InnoDB存储引擎对于SELECT语句支持两种一致性的锁定读(locking read)操作. . SELECT …… FOR UP ...

  2. 大家好,又是新的一天。今天给大家带来一些新的知识:选择器的种类和css的三种样式

    今天我们为大家 选择了 六种 选择器: 1. 标签选择器 2.id选择器 3.class选择器 4.后代选择器 5.子代选择器 6.交集选择器 我们就举三个典型的例子:后代选择器,子代选择器和交集选择 ...

  3. 数据筛选和API优化

    筛选数据 需求:如果数据库中存在OrderNum相同,且IsDefault不同的记录,那么IsDefault值为0的记录将替换值为1的记录(IsDefault值为1的记录不展示). 由于查出来的数据不 ...

  4. 索引堆(Index Heap)

    首先我们先来看一个由普通数组构建的普通堆. 然后我们通过前面的方法对它进行堆化(heapify),将其构建为最大堆. 结果是这样的: 对于我们所关心的这个数组而言,数组中的元素位置发生了改变.正是因为 ...

  5. 网络控制器intel 82599, powerpc 830的BD描述符结构

    一.Intel 82599的BD结构 1.文档名称“82599-10-gbe-controller-datasheet.pdf”,可以从intel官网上下载. https://www.intel.cn ...

  6. TeamViewer试用期满转免费版本方法

    TeamViewer安装完企业版以后,当试用期结束,到期后,无论你卸载.重装了多少次,都无法无法成功安装个人版,从网上搜索来得到的解决办法就是:安装TeamViewer的时候与你的电脑以及网卡地址进行 ...

  7. windows server 2008 r2安装windows media player

    1.打开“服务器管理器”: 2.依次单击“功能” →  “添加功能”: 3.勾选“桌面体验”和“优质Windows音频视频体验”: 4.单击“安装”按钮:安装完毕,根据提示重新启动计算机即可.

  8. Ehcache缓存配置以及基本使用

    在java项目广泛的使用.它是一个开源的.设计于提高在数据从RDBMS中取出来的高花费.高延迟采取的一种缓存方案.正因为Ehcache具有健壮性(基于java开发).被认证(具有apache 2.0 ...

  9. 产品经理说|AIOps 让告警管理变得更智能

    AIOps 人工智能和IT运营支撑 Ops 之间的故事,愈演愈烈,已经成为当今运维圈的热门话题,我打算从2篇文档分享我们在 AIOps 上一些探索和实践.(本篇)为什么事件(告警)处理需要 AIOps ...

  10. selenium-获取一组数组进行操作(七)

    selenium-获取一组数组进行操作 以  纵横中文网  中获取24小时畅销榜的书单为例 此文仅做 selenium 在自动化测试中怎么获取一组数据进行说明,不做网络爬虫解释 当然,使用爬虫得到本文 ...