[概要]
Jakarta Commons Digesterは、
XMLファイルを読み込んで、Javaオブジェクトに変換するためのライブラリです。
JAXBがいまいちなので、試してみました。
[必須環境]
JDKは、ver1.3辺りがあれば十分でしょう。
加えて、以下のライブラリが必要になります。
今回は、Xercesを使いました。
Commons系のライブラリは、Jakarta Commonsから、
適当に拾ってきてください。
[実験内容]
適当なXMLファイルを用意して、Digesterを使って読み込み、コンソールに表示してみました。
[実験環境]
JDK: J2SDK1.4
今回は、version1.2を使用しました。
commons-digester-1.2.zip
[実験用ソースコード]
・DigesterTest.java
(設定ファイル解析メインクラス)
・TestBean.java
(設定内容格納用JavaBeansクラス)
・conf.xml
(実験用設定ファイル)
[コンパイル]
javac -classpath commons-digester.jar;xerces.jar;. DigesterTest.java
[実行]
java -classpath commons-digester.jar;xerces.jar;commons-collections.jar;commons-logging-1.0.jar;commons-beanutils.jar;. -Dorg.xml.sax.driver=org.apache.xerces.parsers.SAXParser DigesterTest
[実験結果]
DigesterTest.javaを実行すると、以下のように表示されます。
Param1 = value1 Param2 = value2 Param3 = value3 Option = 123
Beanでint型フィールドにも、きちんと値が格納されていることが分かります。
ちなみに、abcなどの文字列がoptionに設定されていた場合、
int型のデフォルト値である0になります。
[なんとなく感想]
少なくとも、DOMをいじってどうこうするよりは、遥かにラクです。(当たり前だね(^^;)
あと、JAXBに代表される(?)、データバインディングとの比較ですが、
まあ、ただ設定ファイルを読むだけなら、こっちで十分じゃない?
という気がしてならないです。
データバインディングって、データ交換とかする時に使うものっぽいし。
ちなみに、DigesterはXML設定ファイルを読む際のルールをXML化できるので、
XML設定ファイルのスキーマ(レイアウト)が変わっても、
コードの修正無しに読めるみたいです。
(まだ、そこまで試してませんが...)
目的通り使うのなら、かなり使えると思います。
唯一の難点は、依存ライブラリが多いことかも...