又是一个问题。这次我认为是因为标签在同一条消息中使用了两次,嵌套。
检索具有唯一标签(如 requestDateTime
、statusDateTime
和 completedStateEnteredDate
(的其他项目没有问题,但我无法成功获取<som>
参考号、状态(内部状态(或类型(再次,在另一个 <type>
标签内(。
所以我知道我的命名空间有效,只是无法弄清楚如何获取我需要的数据。具体来说,我需要在<som>6000526</som>
部分中捕获该数值。数据确实返回多个 SOM 编号,因此好处是如何捕获多个 SOM 编号(例如前 2 个或 5 个会很酷(。
<return>
<success>true</success>
<networkUpdateList>
<confirmationDue>
<actualDays>26</actualDays>
<actualHours>11</actualHours>
<actualMinutes>57</actualMinutes>
<businessDays>22</businessDays>
<businessHours>7</businessHours>
<businessMinutes>57</businessMinutes>
<negative>true</negative>
</confirmationDue>
<confirmingCarrierId>11567</confirmingCarrierId>
<numbers>
<donorCarrierId>11657</donorCarrierId>
<gainingCarrierId>11667</gainingCarrierId>
<losingCarrierId>11657</losingCarrierId>
<number>
<phoneNumber>098453520</phoneNumber>
</number>
</numbers>
<som>
<requestDateTime>2017-04-11T10:08:01+12:00</requestDateTime>
<som>6000526</som>
<status>
<status>GC and LC Complete</status>
</status>
<statusDateTime>2017-04-11T10:09:09+12:00</statusDateTime>
<type>
<type>Port</type>
</type>
<completedStateEnteredDate>2017-04-11T10:09:09+12:00</completedStateEnteredDate>
</som>
</networkUpdateList>
使用此 XPath 表达式获取所需的结果:
/return/networkUpdateList/som/som
结果:
<som>6000526</som>
这甚至适用于不同networkUpdateList
节点的多个<som>
元素子级。
我错开了解决方案,适用于所有重复的名称:
SOM/SOM完成这项工作。
就像//status/status 和//type/type 一样,所以我是一个快乐的露营者。我只是不知道如何在响应中选取下一个事件,但我并不迫切需要它,我可以循环。
编辑:还发现(//som/som) [2]
返回第二个匹配项,并且 (//som/som( [1] 返回第一个匹配项,依此类推。非常简单,很高兴知道。
在此处发现:https://msdn.microsoft.com/en-us/library/ms256086(v=vs.110(.aspx
创建脚本断言并使用以下代码:
// create groovyUtils and XmlHolder for response of Request 1 request
def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context )
def holder = groovyUtils.getXmlHolder( "SOAP Request#Response" )
// loop item nodes in response message
for( item in holder.getNodeValues( "//som/som" ))
log.info "Item : [$item]"
这应该打印出 XPath 后面的每个节点的所有值。在脚本中断言日志应按以下格式输出:
周三 3月 21 14:46:14 GMT 2018:信息:项目 : [0.69]
2018年3月21日星期三 14:46:14 GMT:信息:项目 : [4.14]
周三 3月 21 14:46:14 GMT 2018:信息:项目 : [0.69]
周三 3月 21 14:46:14 GMT 2018:信息:项目 : [0.69]
周三 3月 21 14:46:14 GMT 2018:信息:项目 : [1.6]
2018年3月21日星期三 14:46:14 GMT:信息:项目 : [3.45]
周三 3月 21 14:46:14 GMT 2018:信息:项目 : [1.85]