Serialize an object using XMLTag(s): XML(JAVA对象序列化成XML)

来源:互联网 发布:人工蜂群算法和粒子群 编辑:程序博客网 时间:2024/05/17 04:13

http://www.rgagnon.com/javadetails/java-0470.html

 一、Consider this simple class

 
public class Foo {   private String foo ;     public void setFoo(String s) {     foo = s;   }      public String getFoo() {     return foo;   }}

考虑如下简单的类,一个foo属性和set,get两个方法。
二、

The java.beans package provides useful methods to save an object state into an XML file and easily read it back.

Here an Helper class for our Foo class.

java.beans包里提供了一些有用的方法用来将对象以XML文件的方式保存并且非常容易读取出来(反序列化)。下面是一个帮助类,提供了write和read方法,分别用来序列化对象和读取xml反序列化为对象 。

三、Here how to use it.
   下面为测试类来测试如何使用它。
四、运行上面的测试类,得到如下的XML文件 
Just for fun, here the resulting XML file (with my installation) 
五、【实例】
   

import java.beans.XMLDecoder;import java.beans.XMLEncoder;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.io.Serializable;

public class Test {       public static void main(String[] args) throws IOException{        UserBean user = new UserBean();        OtherUserInfoBean otherUserInfo = new OtherUserInfoBean();               otherUserInfo.setAddress("汉字");        otherUserInfo.setEmail("test@test.com");               user.setName("hello");        user.setPassword("world");               user.setOtherinfo(otherUserInfo);                                 ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();        BufferedOutputStream bufferOut = new BufferedOutputStream(byteArrayOut);               writeObjectToXML(bufferOut, user);        byte[] bys = byteArrayOut.toByteArray();               // for(int i=0; i<bys.length; i++)        // System.out.print(bys[i] +" ");        byteArrayOut.close();        bufferOut.close();                      ByteArrayInputStream byteArrayIn = new ByteArrayInputStream(bys);        BufferedInputStream bufferIn = new BufferedInputStream(byteArrayIn);               UserBean user1 = readObjectFromXML(bufferIn);               byteArrayIn.close();        bufferIn.close();                      System.out.println(user1.getName());        System.out.println(user1.getOtherinfo().getAddress());    }       public static <T extends Serializable> void writeObjectToXML(OutputStream out, T obj){        XMLEncoder xmlEncoder = null;               try{            xmlEncoder = new XMLEncoder(out);            xmlEncoder.writeObject(obj);        }finally{            if(null != xmlEncoder)                xmlEncoder.close();        }    }       @SuppressWarnings("unchecked")    public static <T extends Serializable> T readObjectFromXML(InputStream in){        T obj = null;        XMLDecoder xmlDecoder = null;               try{            xmlDecoder = new XMLDecoder(in);            obj = (T) xmlDecoder.readObject();        }finally{            if(null != xmlDecoder)                xmlDecoder.close();        }        return obj;    }}

 
原创粉丝点击