kurukuru-papaのブログ

主に、ソフトウェア開発に関連したメモを書き溜めたいと思います。

JAXBを使ってみました

JAXBを使ってみたのでメモしておきます。

はじめに

JAXB(Java Architecture for XML Binding)とは、Java SE 1.6 以降に含まれるライブラリで、Javaのオブジェクトと、XMLを、相互に変換することができます。

似たようなライブラリには、ApacheのXMLBeansがあるようですね。

オブジェクト→XML変換

こんな感じで、さくっとできちゃいました。

変換元データを保持するクラス

public class PersonBean {
    // Getter/Setterを省略して、publicにしてあります。
    public String name;
    public int age;
}

変換処理

    @Test
    public void testMarshal() {
        // 準備

        // 入力オブジェクト
        PersonBean personBean = new PersonBean();
        personBean.name = "山田 太郎";
        personBean.age = 20;

        // 期待値
        String expected = "" //
                + "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n" //
                + "<personBean>\n" //
                + "    <name>山田 太郎</name>\n" //
                + "    <age>20</age>\n" //
                + "</personBean>\n" //
        ;

        // 出力先
        StringWriter sw = new StringWriter();

        // 実行
        JAXB.marshal(personBean, sw);

        // 検証
        assertThat(sw.toString(), is(expected));
    }

XML→オブジェクト変換

変換処理

    @Test
    public void testUnmarshal() {
        // 準備

        // 入力XML
        String input = "" //
                + "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n" //
                + "<personBean>\n" //
                + "    <name>山田 太郎</name>\n" //
                + "    <age>20</age>\n" //
                + "</personBean>\n" //
        ;
        StringReader sr = new StringReader(input);

        // 実行
        PersonBean actual = JAXB.unmarshal(sr, PersonBean.class);

        // 検証
        assertThat(actual.name, is("山田 太郎"));
        assertThat(actual.age, is(20));
    }

参考ページ

Java - JAXB使い方メモ - Qiita
 ※非常に分かりやすくまとまっていました!