XMLからオブジェクトを作る その2

特殊値(null、日付)に対応。

XMLのデータ

こんな感じ。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE bodybuilder>
<bodybuilder>
  <list>
    <add value="value1"/>
    <add value="value2"/>
    <add>
      <map>
        <key1 value="map value1"/>
        <!-- null値 -->
        <key2 value="${null}"/>
        <key3 value="map value2"/>
        <!-- 日付値 -->
        <key4 value="${2000-10-11 20:13:40}"/>
        <key5 value="map value5"/>
      </map>
    </add>
    <add value="value4"/>
  </list>
</bodybuilder>

設定ファイル

こんな感じ。


# value
bodybuilder.value.date.format=[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}
bodybuilder.value.date.class=bodybuilder.builder.value.DateValue
bodybuilder.value.null.format=null
bodybuilder.value.null.class=bodybuilder.builder.value.NullValue

サンプルのコード

こんな感じ。


package sample;

import bodybuilder.builder.Bullworker;
import bodybuilder.viewer.Viewer;

public class Sample3 {

public static void main(String[] args) {
Bullworker bullworker = new Bullworker(
"C:\\eclipse3\\workspace\\bodybuilder\\data\\sample3.xml");
Object obj = bullworker.getMuscle();
Viewer.dump(obj);
}

}

サンプルの実行結果

こんな感じ。


ArrayList(4) {
[0]=>
String(6) "value1"
[1]=>
String(6) "value2"
[2]=>
HashMap(5) {
["key1"]=>
String(10) "map value1"
["key3"]=>
String(10) "map value2"
["key5"]=>
String(10) "map value5"
["key2"]=>
null
["key4"]=>
Date "Wed Oct 11 20:13:40 GMT+09:00 2000"
}
[3]=>
String(6) "value4"
}

TODO

  • サーブレットAPIへの対応。
    • MockRunner、StrutsTestCaseへの対応。
  • オブジェクトを再帰的に比較するAssertクラスの作成。
    • 精査しない(できない)値への対応。
  • XMLの一ファイルを一テストケースとするテストユーティリティの作成。
  • ロギングの追加。
  • コンストラクタへの対応。
  • 特殊値(null日付型、改行を含む文字列)への対応。
  • Bullworkerクラスの進退。
  • スタックトレースをも少し見やすく。
  • メモリリークしてるかも。

その他

Eclipseのプロジェクト一式*1

*1:JUnit、Commons BeanUtils/Logging、JDOM、Xerces