Сериализация объектов в XML
В Java есть возможность сериализации объектов JavaBeans в XML. Я не буду здесь описывать спецификацю JavaBeans, при желании ее можно найти http://java.sun.com/products/javabeans/.
Создадим два класса:
Код | public class MyJavaBean { private int intVal; private String stringVal;
public int getIntVal() { return intVal; }
public void setIntVal(int intVal) { this.intVal = intVal; }
public String getStringVal() { return stringVal; }
public void setStringVal(String stringVal) { this.stringVal = stringVal; } } |
Код | public class MyJavaBeanContainer { private MyJavaBean mainBean; private MyJavaBean helperBean;
public MyJavaBean getMainBean() { return mainBean; }
public void setMainBean(MyJavaBean mainBean) { this.mainBean = mainBean; }
public MyJavaBean getHelperBean() { return helperBean; }
public void setHelperBean(MyJavaBean helperBean) { this.helperBean = helperBean; } } |
Для сериализации используется класс XMLEncoder, который действует аналогично ObjectOutputStream, для десериализации используется XMLDecoder.
Сериализуем наши классы в файл, а затем восстановим их:
Код | public static void main(String[] args) throws Exception { MyJavaBean bean = new MyJavaBean(); bean.setIntVal(123); bean.setStringVal("Vingrad Programmers Forum");
MyJavaBeanContainer beanContainer = new MyJavaBeanContainer(); beanContainer.setMainBean(bean);
FileOutputStream out = new FileOutputStream("my_java_bean.xml"); XMLEncoder xmlEncoder = new XMLEncoder(out); xmlEncoder.writeObject(beanContainer); xmlEncoder.flush(); xmlEncoder.close();
FileInputStream in = new FileInputStream("my_java_bean.xml"); XMLDecoder xmlDecoder = new XMLDecoder(in); MyJavaBeanContainer restoredBean = (MyJavaBeanContainer) xmlDecoder.readObject(); xmlDecoder.close();
System.out.println("restoredBean.getMainBean().getIntVal() = " + restoredBean.getMainBean().getIntVal()); System.out.println("restoredBean.getMainBean().getStringVal() = " + restoredBean.getMainBean().getStringVal()); System.out.println("restoredBean.getHelperBean() = " + restoredBean.getHelperBean()); } |
В результате запуска в консоли получим:
Код | restoredBean.getMainBean().getIntVal() = 123 restoredBean.getMainBean().getStringVal() = Vingrad Programmers Forum restoredBean.getHelperBean() = null |
и на диске будет создан файл my_java_bean.xml с таким содержимым:
Код | <?xml version="1.0" encoding="UTF-8"?> <java version="1.5.0_01" class="java.beans.XMLDecoder"> <object class="MyJavaBeanContainer"> <void property="mainBean"> <object class="MyJavaBean"> <void property="intVal"> <int>123</int> </void> <void property="stringVal"> <string>Vingrad Programmers Forum</string> </void> </object> </void> </object> </java> |
Объект был успешно сериализован и десериализован. |