Digester1.8のルール応用

感想おまちしてます!

既存のDigesterのルールを使って、いろんな例の実現性を検討してみる。

スポンサーリンク

繰り返し要素の対応

繰り返し要素を使いたい場合、ちょっと工夫しなければできなかった。

 <user id="user0001">
<name>藤原</name>
<age>20</age>
<telList>
<tel>111-1111-1111</tel>
<tel>222-2222-2222</tel>
</telList>
</user>

ルールとしては

  1. userタグがきたらUserVOを作成
  2. name、ageがきたらUserVOに設定
  3. telListがきたら、ArrayListを作成してUserVOに設定
  4. telがきたら、ArrayListにadd

これを実現するには以下のようにルールを記述する

 //例1
<pattern value="items/user/telList">
<object-create-rule classname="java.util.ArrayList" />
<set-next-rule methodname="setTelList" />
</pattern>

<!-- トップオブジェクトであるArrayListのaddメソッドを呼び出す
引数はtel要素の値 -->
<pattern value="items/user/telList/tel">
<call-method-rule methodname="add" paramcount="1" />
<call-param-rule paramnumber="0" />
</pattern>
 //例2
<pattern value="items/user/telList">
<object-create-rule classname="java.util.ArrayList" />
<set-next-rule methodname="setTelList" />
<pattern value="tel">
<call-method-rule methodname="add" paramcount="1" />
<call-param-rule paramnumber="0" />
</pattern>
</pattern>