commons-digesterメモ2 -Mapに格納

以前@ITの掲示板で自分で質問してから半年自分でも忘れていたのですがKacさんが回答してれました!ありがとうございます!!

ちなみに前回はcommons-digesterメモ2 -Listに格納

以下のようなデーターが存在します。

<root>

    <user id="admin" password="password"/>

    <user id="user1" password="12345678"/>

    <user id="user2" password="87654321"/>

</root>

userのidをKeyとして各レコードをUserValueとしてMapに格納する場合どうような記述をすればいいのでしょう?という趣旨のもの

以下、Kacさんに教えていただいた方法

<digester-rules>
<!– HashMapを生成する –>

<object-create-rule pattern="root" classname="java.util.HashMap" />

<pattern value="root/user">

<!– HashMap.put()をcall 引数は2つ –>

<call-method-rule methodname="put" paramcount="2" />

<!– put()の第1引数は id属性 –>

<call-param-rule paramnumber="0" attrname="id" />

<!– put()の第2引数用にBeanを生成する –>

<object-create-rule classname="UserValue" />

<!– Beanに値をセットする –>

<set-properties-rule />

<!– 生成したBeanはスタックの一番上にあるからそれを第2引数に指定する –>

<call-param-rule paramnumber="1" stack-index="0" />

</pattern>
</digester-rules>

実際にテストしてみて成功!!Kacさん本当にありがとうごさいました!!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


This site uses Akismet to reduce spam. Learn how your comment data is processed.