我从 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}更改为{NPV_NEW},则生成的 HashMap 应该是:
BPV = -395.79435433174876;
NPV_NEW = 26960.051401523993
我认为在解析模板 XML 时,当您找到一个值与模式 {.+} 匹配的标签时,会通过该标签的原始 XML 搜索。然后将条目与模板 XML 的键和原始 XML 的值一起放入 Hashmap。
有没有更好的办法?我认为每次找到具有可变值的节点时,解析原始 XML 的效率可能会有点低。