zoukankan      html  css  js  c++  java
  • 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
     * <p>
     * 属性是包括getter,setter属性生成, 序列化的类必须包括一个公共无參构造函数。

    * </p> * * @author kevin LUAN * */ public class SerializableXmlUtils { @SuppressWarnings("unchecked") public static <T> 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 <T> 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: " + xml); user = parserXML(xml); System.out.println("反序列化Bean: " + 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"?

    > <java version="1.7.0_45" class="java.beans.XMLDecoder"> <object class="com.koudai.laohuji.service.User"> <void property="aihao"> <array class="java.lang.String" length="2"> <void index="0"> <string>篮球</string> </void> <void index="1"> <string>足球</string> </void> </array> </void> <void property="id"> <int>1</int> </void> <void property="name"> <string>张三丰</string> </void> <void property="student"> <object class="com.koudai.laohuji.service.Student"> <void property="classId"> <int>1</int> </void> <void property="level"> <string>二年级</string> </void> </object> </void> </object> </java>

    反序列化Bean:

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







  • 相关阅读:
    移动端布局方案汇总&&原理解析
    Javascript运行机制
    git 使用
    async await详解
    vue使用axios调用豆瓣API跨域问题
    hash和history的区别
    http状态码
    XSS 和 CSRF简述及预防措施
    【pytorch】pytorch基础学习
    [源码解读] ResNet源码解读(pytorch)
  • 原文地址:https://www.cnblogs.com/mqxnongmin/p/10777637.html
Copyright © 2011-2022 走看看