読者です 読者をやめる 読者になる 読者になる

HHeLiBeXの日記 正道編

日々の記憶の記録とメモ‥

Simpleライブラリを試してみる

「Simple」という名のライブラリがあるらしい。

(v2.0からはZIP形式で提供されているのに、2009年11月24日更新(公開?)の記事に「困った点は、このアーカイブが .tar.gz 形式であることです。」って書いてある。のに、記事内ではv2.1.4を使っているという不思議。はどうでもいいとして‥)
とりあえずちょっといろいろ試してみようということで。

セットアップとサンプル実行

「Simple」のサイトの、「download」にある記述によると、


All downloads are compatible with the Java 5 and Java 6 platform. For Java 6 the framework has no external dependancies and is completely self contained. For Java 5 two external JAR files are required, the StAX API and the StAX implementation, both are provided with the download.
ということだそうだ。(ライブラリの競合とかで悩みたくないなら、Java 6にするのがよさそう。ただ、今回はJava 5で試す。)
プログラムを作成して実行するには、ZIPファイル(今回は simple-xml-2.1.8.zip )の次のファイルをクラスパスに指定する。

  • jar/simple-xml-2.1.8.jar
  • lib/stax-1.2.0.jar (Java 6の場合には不要)
  • lib/stax-api-1.0.1.jar (Java 6の場合には不要)

まずは、次のようなAntのビルドファイルを作成する。

<?xml version='1.0' encoding='UTF-8'?>

<project name="Simple test" default="run" basedir=".">
    <path id="cp">
            <pathelement path="${basedir}/build/classes" />
            <pathelement location="${basedir}/lib/simple-xml-2.1.8.jar" />
            <pathelement location="${basedir}/lib/stax-api-1.0.1.jar" />
            <pathelement location="${basedir}/lib/stax-1.2.0.jar" />
    </path>
    <target name="run">
        <delete dir="${basedir}/build" />
        <mkdir dir="${basedir}/build/classes" />
        <javac destdir="${basedir}/build/classes" encoding="utf-8" debug="true" optimize="false">
            <src path="${basedir}/src" />
            <include name="**/*.java" />
            <classpath>
                <pathelement location="${basedir}/lib/simple-xml-2.1.8.jar" />
            </classpath>
        </javac>
        <echo message="=== LureExample ===" />
        <java classname="test.LureExample" classpathref="cp" fork="true" />
        <echo message="=== LureExample2 ===" />
        <java classname="test.LureExample2" classpathref="cp" fork="true" />
        <echo message="=== LureExample3 ===" />
        <java classname="test.LureExample3" classpathref="cp" fork="true" />
        <echo message="=== LureExample4 ===" />
        <java classname="test.LureExample4" classpathref="cp" fork="true" />
        <echo message="=== LureExample5 ===" />
        <java classname="test.LureExample5" classpathref="cp" fork="true" />
        <echo message="=== LureExample6 ===" />
        <java classname="test.LureExample6" classpathref="cp" fork="true" />
    </target>
</project>

それと、developerWorks の記事に載っているすべてのサンプルプログラムを、ダウンロードするか、記事中のコード断片をベースに完全なソースを作成する。
(ただ注意が必要と思われるのが、記事中のリスト15.Lure2.xml。ファイル名が "Lure2.xml" と先頭が大文字になっている一方、それを読み込むプログラム(リスト16.LureExample6クラス)では "lure2.xml" と小文字になっている。Windows 環境だと問題なく読めてしまうが‥)
(もうひとつ注意が必要なのが、リスト14.LureExample5クラスリスト11.LureExzmple4クラスをベースにしているので、"inventory.xml" という出力先ファイル名が互いに異なるように変更しないと片方の結果しか確認できない。)
で、これを実行すると、記事にあるように期待されている結果が得られることを確認。


ちょっと面白いかも。
XMLファイルの構造とPOJOの構造を合わせてさえしまえば、設定ファイルをXML形式で記述してそれを読み込む場合に、ApacheのCommons Digester を使用するより楽かも。
いろいろと気になった点などを検証したいところだが、続きは別エントリで。