JavaBeans を XML ファイルに保存するプログラム例です。 JavaBeans として作成されている SampleBean クラスのインスタンスを 生成してプロパティを変更し sample.xml という XML ファイルに保存しています。 SampleBean は Serializable インターフェイスを実装していますが XMLEncoder を使って XML に変換するにあたっては Serializable インターフェイスを実装している必要はありません。
XMLEncoder のコンストラクタは引数に OutputStream オブジェクトを指定します。 この OutputStream オブジェクトが UTF-8 で作成された XML の byte 列を書き出します。
XMLEncoder オブジェクトを生成したら XML への変換は writeObject メソッドで行います。 writeObject メソッドの引数には XML 形式に変換するオブジェクトを指定します。
XMLEncoder#flush メソッドが呼び出された時にコンストラクタで 設定した OutputStream オブジェクトへの書き込みが行われます。 XMLEncoder#close メソッドは XMLEncoder#flush メソッドを呼び出し、 XML を完成(ルートタグを閉じる)させてから OutputStream オブジェクトの close メソッドを呼び出します。
/******************** EncodeTest.java ********************/
import java.beans.XMLEncoder;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.FileNotFoundException;
public class EncodeTest {
public static void main(String[] args) throws FileNotFoundException {
SampleBean bean = new SampleBean();
bean.setValue(100);
Foo foo = new Foo();
foo.setText("AAA");
bean.setFoo(foo);
XMLEncoder encoder = new XMLEncoder(
new BufferedOutputStream(
new FileOutputStream("sample.xml")));
encoder.writeObject(bean);
encoder.close();
}
}
/******************** SampleBean.java ********************/
public class SampleBean implements java.io.Serializable {
private int value;
private Foo foo;
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
public Foo getFoo() {
return foo;
}
public void setFoo(Foo foo) {
this.foo = foo;
}
}
/******************** Foo.java ********************/
public class Foo implements java.io.Serializable {
private String text;
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}
/******************** sample.xml ********************/
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.5.0_01" class="java.beans.XMLDecoder">
<object class="SampleBean">
<void property="foo">
<object class="Foo">
<void property="text">
<string>AAA</string>
</void>
</object>
</void>
<void property="value">
<int>100</int>
</void>
</object>
</java>