Webservice から次の XML を受け取ります。
<ns1:irsValorationReturn xmlns:ns1="http://webServices.es">
<ns1:error xsi:nil="true"/>
<ns1:format>dd/MM/yyyy</ns1:format>
<ns1:pricingDate>02/09/2013</ns1:pricingDate>
<ns1:results>
<ns1:items>
<ns1:bpv>-395.79435433174876</ns1:bpv>
<ns1:npv>26960.051401523993</ns1:npv>
<ns1:payingNpv>0.0</ns1:payingNpv>
<ns1:pricingDelta>342.85778485967523</ns1:pricingDelta>
<ns1:receivingNpv>26960.051401523993</ns1:receivingNpv>
<ns1:swapRate>0.6811631117640043</ns1:swapRate>
</ns1:items>
</ns1:results>
</ns1:irsValorationReturn>
この XML を HashMap に変換する必要があります。HashMap のエントリは、以下のテンプレートのキー {} ({KEY OF HASHMAP}) 間の値に応じた変数である必要があります。Hashmap の対応するキーの値は、WebService XML 応答からの元の値になります。つまり、
BPV = -395.79435433174876;
NPV = 26960.051401523993
...
<ns1:irsValorationReturn xmlns:ns1="http://webServices.es">
<ns1:error xsi:nil="true"/>
<ns1:format></ns1:format>
<ns1:pricingDate><ns1:pricingDate>
<ns1:results>
<ns1:items>
<ns1:bpv>{BPV}</ns1:bpv>
<ns1:npv>{NPV}</ns1:npv>
<ns1:payingNpv>{PAYING_NPV}</ns1:payingNpv>
<ns1:pricingDelta>{PRICING_DELTA}</ns1:pricingDelta>
<ns1:receivingNpv>{RECEIVING_NPV}</ns1:receivingNpv>
<ns1:swapRate>{SWAP_RATE}</ns1:swapRate>
</ns1:items>
</ns1:results>
</ns1:irsValorationReturn>
{NPV_NEW}の{NPV}を変更すると、結果の HashMap は次のようになります。
BPV = -395.79435433174876;
NPV_NEW = 26960.051401523993
テンプレート XML を解析して、パターン {.+} と一致する値を持つタグを見つけたら、そのタグの元の XML を検索します。次に、テンプレート XML のキーと元の XML の値を使用して、ハッシュマップにエントリを配置します。
何か良い方法はありますか?変数値を持つノードを見つけるたびに元の XML を解析するのは、少し効率が悪いと思います。