有人可以为以下问题推荐解决方案。
我有这样的xml:
<nuts1:SettlementRequest>
<!--Optional:-->
<nuts1:MeterReadingId>1842869</nuts1:MeterReadingId>
我需要接受MeterReadingId字段,添加1并将此值输入到下一个请求中,该请求应如下所示:
</nuts:Header>
<!--Optional:-->
<nuts1:MeterReadingId>1842870</nuts1:MeterReadingId>
首先我使用了这样的代码:
//*:SettlementRequest/*:MeterReadingId/text()+ 1
但SOAPUI返回的值如
MeterReadingId [1.84287E6]
这就是为什么我写了复杂的xpath:
concat(substring-before(string(//*:SettlementRequest/*:MeterReadingId/text()+ 1), '.'), substring-before(substring-after(string(//*:SettlementRequest/*:MeterReadingId/text()+ 1), '.'), 'E'))
这段代码一直有效,直到你需要增加Id,结尾如... 69所以最终值应该是1842870.这段代码如下:
MeterReadingId [184287]
它只省略了最后的0 ...所以我无法得到正确的值。 有人可以提供任何关于如何将1添加到当前meterReadingId的想法,以便我可以收到1842870.
由于
答案 0 :(得分:0)
似乎SOAPUI为数字返回这种格式,即使您使用XPath函数作为ceiling
来计算十进制数并返回最小整数。
所以我建议采用以下方法;
假设您的第一个testStep名为/usr/bin/gcc :
section size addr
.interp 28 4194928
.note.ABI-tag 32 4194956
.note.gnu.build-id 36 4194988
.gnu.hash 240 4195024
.dynsym 4008 4195264
.dynstr 2093 4199272
.gnu.version 334 4201366
.gnu.version_r 160 4201704
.rela.dyn 720 4201864
.rela.plt 3240 4202584
.init 14 4205824
.plt 2176 4205840
.text 384124 4208016
.fini 9 4592140
.rodata 303556 4592160
.eh_frame_hdr 8540 4895716
.eh_frame 50388 4904256
.gcc_except_table 264 4954644
.tbss 16 7052632
.init_array 16 7052632
.fini_array 8 7052648
.jcr 8 7052656
.data.rel.ro 3992 7052672
.dynamic 480 7056664
.got 216 7057144
.got.plt 1104 7057384
.data 2520 7058496
.bss 80976 7061024
.gnu_debuglink 12 0
Total 849310
,并且您显示的请求包含:
SOAP Request 1
在第二个testStep中,您要使用之前的<nuts1:SettlementRequest>
<!--Optional:-->
<nuts1:MeterReadingId>1842869</nuts1:MeterReadingId>
...
加1,请使用以下符号:
<MeterReadingId>
</nuts:Header>
<!--Optional:-->
<nuts1:MeterReadingId>${=${SOAP Request#response#//*:SettlementRequest/*:MeterReadingId/text()} + 1}</nuts1:MeterReadingId>
...
的解释:
在前一个表达式中,第一个SOAPUI评估${=${SOAP Request 1#response#//*:SettlementRequest/*:MeterReadingId/text()} + 1}
,它通过名称获取testStep请求(在本例中为${SOAP Request 1#response#//*:SettlementRequest/*:MeterReadingId/text()}
),获取SOAP Request
属性并应用XPath,使其计算结果为{ {1}},所以现在在此过程之后它有response
。
然后,SOAPUI将1842869
内的表达式计算为groovy脚本,因此它返回${=1842869+1}
和,并将toString()应用于结果,为您提供${=}
的预期输出。 / p>
希望它有所帮助,