Simpleとは
JavaのXMLシリアライゼーションフレームワークです。ハイパフォーマンスを売りにしているようです。本家サイトは以下
http://simple.sourceforge.net/home.php
今回試すのは、Simple 2.1.3
簡単なオブジェクトのシリアライズ
落としたファイルのsimple-xml-2.1.3\jarにあるsimple-xml-2.1.3.jarをクラスパスに追加します。
本家のチュートリアルを参考に・・
まず、シリアライズ対象のオブジェクトを作成します。
import org.simpleframework.xml.Attribute; import org.simpleframework.xml.Element; import org.simpleframework.xml.Root; @Root public class Example1 { @Element private String text; @Attribute private int index; public Example1(){} public Example1(String text, int index) { this.text = text; this.index = index; } public String getMessage() { return text; } public int getId() { return index; } }
XMLのルートと要素、属性に対応するアノテーションが用意されているため、対象フィールドにアノテートします。では動作確認してみます。
import java.io.File; import org.junit.Test; import org.simpleframework.xml.Serializer; import org.simpleframework.xml.core.Persister; public class Example1Test { @Test public final void testSerializ() throws Exception { Serializer serializer = new Persister(); serializer.write(new Example1("message", 99), new File("example.xml")); } }
Persisterオブジェクトのwriteメソッドに先ほど作成したExample1オブジェクトと、対象とするFileを渡すだけで以下のXMLファイルが作成されます。
<example1 index="99"> <text>message</text> </example1>
簡単なオブジェクトのデシリアライズ
今作成したオブジェクトをデシリアライズしてみます。以下のテストメソッドを追加します。
@Test public final void testDeSerializ() throws Exception { Serializer serializer = new Persister(); Example1 example = serializer.read(Example1.class, new File("example.xml")); System.out.println(ToStringBuilder.reflectionToString(example)); }
先ほどと同様に、Persister の read メソッドを呼び出すだけです。以下のような結果が得られ、デシリアライズされていることが確認できます。
etc9.example.Example1@1c1ea29[text=message,index=99]