在 xpath 中放大整数标记值

Enlarge integer tag value in xpath

有人可以为以下问题推荐一个解决方案吗?

我有这样的 xml:

<nuts1:SettlementRequest>
           <!--Optional:-->
           <nuts1:MeterReadingId>1842869</nuts1:MeterReadingId>

我需要获取 MeterReadingId 字段,将其添加到 1 并将此值输入到下一个请求中,它应该如下所示:

</nuts:Header>
        <!--Optional:-->
        <nuts1:MeterReadingId>1842870</nuts1:MeterReadingId>

首先我使用了这样的代码:

//*:SettlementRequest/*:MeterReadingId/text()+ 1

但是 SOAPUI returns 的值像

MeterReadingId  [1.84287E6]

这就是我写复杂xpath的原因:

concat(substring-before(string(//*:SettlementRequest/*:MeterReadingId/text()+ 1), '.'), substring-before(substring-after(string(//*:SettlementRequest/*:MeterReadingId/text()+ 1), '.'), 'E'))

这段代码一直有效,直到您需要递增以 ...69 结尾的 Id,因此最终值应为 1842870。此代码如下:

MeterReadingId  [184287]

它只是省略了最后一个0...所以我无法得到正确的值。 有人可以提供有关如何将 1 添加到当前 meterReadingId 以便我可以收到 1842870 的任何想法。

谢谢

似乎 SOAPUI returns 这种数字格式,即使您使用 XPath 函数作为 ceiling 计算十进制数和 returns 最小整数。

所以我推荐以下方法;

假设您的第一个 testStep 被命名为 SOAP Request 1 并且您显示的请求包含:

<nuts1:SettlementRequest>
           <!--Optional:-->
           <nuts1:MeterReadingId>1842869</nuts1:MeterReadingId>
...

并且在第二个 testStep 中要使用前面的 <MeterReadingId> 加 1 使用以下符号:

</nuts:Header>
        <!--Optional:-->
        <nuts1:MeterReadingId>${=${SOAP Request#response#//*:SettlementRequest/*:MeterReadingId/text()} + 1}</nuts1:MeterReadingId>
...

${=${SOAP Request 1#response#//*:SettlementRequest/*:MeterReadingId/text()} + 1} 的解释:

在前面的表达式中,首先 SOAPUI 计算 ${SOAP Request 1#response#//*:SettlementRequest/*:MeterReadingId/text()},它通过名称获取 testStep 请求(在本例中为 SOAP Request,获取 response 属性 并应用XPath 所以它的计算结果为 1842869,所以现在在这个过程之后它有 ${=1842869+1}

然后 SOAPUI 将 ${=} 中的表达式计算为 groovy 脚本,因此它 returns 1842869+1 总和并将 toString() 应用于结果,从而为您提供预期的结果输出为 1842870.

希望对您有所帮助,