研究の関係で、大量のテキストデータを扱う必要が出てきました。最近のエントリでいくつか扱ってきたように、その大量のデータはSGMLで記述されているのですが、それではテキストデータからプログラムに読み込むだけでリソースを多く消費してしまいます。それでは困るので、Javaで扱いやすいXML形式に変換してやろうというわけです。
とりあえず簡単に調べてみたところ、APIに java.beans.XMLEncoder と java.beans.XMLEncoder があることが分かりました。これを使ってXMLにデータを変換してやります。
[web] XMLEncoder - Java Platform SE 6
[web] XMLDecoder - Java Platform SE 6
XMLEncoderクラスが、オブジェクトからXMLに変換するクラスです。逆にXMLDecoderクラスが、XMLからオブジェクトに変換します。使い方は次の通り。
OutputStream out = new FileOutputStream("hoge.xml"); XMLEncoder encoder = new XMLEncoder( new BufferedOutputStream(out)); encoder.writeObject(obj); encoder.close();
InputStream in = newn BufferedInputStream( new FileInputStream("test.xml")); XMLDecoder decoder = new XMLDecoder(in); Object obj = decoder.readObject(); decoder.close();
エンコードするオブジェクトには、いくつか制限があります。
(1)引数なしのコンストラクタを実装している。
(2)フィールドに対応したgetter/setterを実装している。
ただし、ObjectOutputStreamクラスの場合と異なり、Serializableインターフェースを実装する必要がありません。
コメントする