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; } }