JavaでXMLにシリアライズ

Javaを使っていて、ユーザーが記入したデータをオブジェクトのままファイルに保存したい、ということはよくあります。セキュリティやプライバシーと無関係な場合は、できれば他のソフトからも読み込んだりしたいので独自フォーマットは避けたいという要求もあります。簡単なデータの場合はバイナリじゃなくてテキストがいいですよね。しかもXMLだと何かとステキです。XMLを扱うんだったら、ApacheXMLサブプロジェクトに便利そうなものがたくさんあるんですが、そんなに大規模にやりたくないときは以下のようなコードがおすすめです(J2SE 1.4.2のドキュメントから抜粋しました)。

import java.beans.XMLEncoder;
import java.io.BufferedOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import javax.swing.JButton;

public class XMLSerialization {
   public static void main(String[] args) {
      try {
         /* Test.xmlというファイルにオブジェクトを書き込むXMLEncoderを定義 */
         XMLEncoder e = new XMLEncoder(
               new BufferedOutputStream(new FileOutputStream("Test.xml")));

         /* テスト的にボタンを作って出力してみる */
         e.writeObject(new JButton("Hello World"));

         e.close();
      } catch(FileNotFoundException e) {
         e.printStackTrace();
      }
   }
}

Java 1.5からはjava.util.PropertiesもXML対応になるのだそうで、そっちを使ってしまってもいいかもしれませんね。