java xml序列化_JAVA序列化和反序列化XML

package com.lss.utils;

import java.beans.XMLDecoder;

import java.beans.XMLEncoder;

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.ByteArrayInputStream;

import java.io.ByteArrayOutputStream;

/**

* JAVA序列化和反序列化XML

*

* 属性是包括getter,setter属性生成, 序列化的类必须包括一个公共无參构造函数。

*

*

* @author kevin LUAN

*

*/

public class SerializableXmlUtils {

@SuppressWarnings("unchecked")

public static T parserXML(String xml) {

ByteArrayInputStream in = new ByteArrayInputStream(xml.getBytes());

XMLDecoder decoder = new XMLDecoder(new BufferedInputStream(in));

decoder.close();

return (T) decoder.readObject();

}

public static String formatXML(T entity) {

ByteArrayOutputStream out = new ByteArrayOutputStream();

XMLEncoder encoder = new XMLEncoder(new BufferedOutputStream(out));

encoder.writeObject(entity);

encoder.close();

return out.toString();

}

public static void main(String[] args) throws Exception {

User user = new User();

user.setId(1);

user.setName("张三丰");

user.setAihao(new String[] { "篮球", "足球" });

user.setStudent(new Student(1, "二年级"));

String xml = formatXML(user);

System.out.println("序列化到XML:\n" + xml);

user = parserXML(xml);

System.out.println("反序列化Bean:\n" + user);

}

}# 測试Bean Code

package com.lss.utils;

import java.util.Arrays;

public class User {

private int id;

private String name;

private Student student;

private String aihao[];

@Override

public String toString() {

return "{id:" + id + ",name:" + name + ",student:" + student + ",aihao:" + Arrays.toString(aihao) + "}";

}

public Student getStudent() {

return student;

}

public void setStudent(Student student) {

this.student = student;

}

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[] getAihao() {

return aihao;

}

public void setAihao(String[] aihao) {

this.aihao = aihao;

}

}package com.lss.utils;

public class Student {

private int classId;

private String level;

public Student() {

}

public Student(int classId, String level) {

this.classId = classId;

this.level = level;

}

public int getClassId() {

return classId;

}

public void setClassId(int classId) {

this.classId = classId;

}

public String getLevel() {

return level;

}

public void setLevel(String level) {

this.level = level;

}

@Override

public String toString() {

return "{classId:" + classId + ",level:" + level + "}";

}

}

#执行測试结果:

序列化到XML:

xml version="1.0" encoding="UTF-8"?

>

篮球

足球

1

张三丰

1

二年级

反序列化Bean:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值