在下面的消息中,我想将2个“ invunique”节点设置为参数vParam。
我可以轻松地使用设置“ cvalue”

xpath(MyMsg.Body, "//*[local-name()='cvalue']") = vParam;


但是我没有找到在1个XPath语句中设置2个“ invunique”节点的好方法,有什么想法吗?

<ns0:newcase xmlns:ns0="http://MyNamespace/v1-0">
<ns0:caseheader>
  <ns0:caseunique>10</ns0:caseunique>
</ns0:caseheader>
<ns0:financials>
 <ns0:invoices>
   <ns0:invoice>
       <ns0:caseunique>10</ns0:caseunique>
       <ns0:invunique>10</ns0:invunique>
       <ns0:invudfs>
         <ns0:invudf>
           <ns0:invunique>20</ns0:invunique>
           <ns0:cvalue>cvalue_0</ns0:cvalue>
           <ns0:otherdesc>otherdesc_0</ns0:otherdesc>
         </ns0:invudf>
       </ns0:invudfs>
  </ns0:invoice>
 </ns0:invoices>
</ns0:financials>
</ns0:newcase>

最佳答案

据我所知(不幸的是,我还没有测试过),xpath函数“ setter”将只能更新第一个匹配项。如果您有第二个cvalue节点,则只会更新第一个。

为什么要在一个语句中而不是在两个语句中同时更新它们?

如果这是一个经常性的节点,我建议改为使用映射或帮助程序类。

10-08 04:09