当父标记属性值是唯一的时,如何获取父标记的标记值?

时间:2018-03-01 07:07:12

标签: java groovy automation soapui

我有这样的SOAP XML数据。

testpmd> show port stats all

######################## NIC statistics for port 0  ########################
RX-packets: 7467716    RX-missed: 9751220    RX-bytes:  11335992888
RX-errors: 0
RX-nombuf:  980047
TX-packets: 0          TX-errors: 0          TX-bytes:  0

Throughput (since last show)
Rx-pps:        40950
Tx-pps:            0
############################################################################

######################## NIC statistics for port 1  ########################
RX-packets: 0          RX-missed: 0          RX-bytes:  0
RX-errors: 0
RX-nombuf:  0
TX-packets: 7450911    TX-errors: 0          TX-bytes:  11310482898

Throughput (since last show)
Rx-pps:            0
Tx-pps:        40946
############################################################################

从上面的响应/ XML中,我必须从每个行集中收集 OBJ_ID,REL_OBJ_ID, CUST_MODEL_CD TYPE_CD 标记值四个值将作为参数传递给另一个WebService请求。

仅供参考:我在SOAPUI工具中使用Groovy Scripting。

如果您提供任何样本,对我有用..

由于

2 个答案:

答案 0 :(得分:1)

这样的事情应该收集重新评估的字段:

def xml = new XmlSlurper().parseText(resultsText)
List<groovy.util.slurpersupport.NodeChild> list =
        xml?.ResultSet?.Row?.collect{it.OBJ_ID + it.REL_OBJ_ID + it.CUST_MODEL_CD + it.TYPE_CD}

输出list.toString()

[[1371718, 1350658, CESE, DRVD], [11983064, 1350658, CESE, DRVD], [13613079, 1350658, CI, DRVD]]

对于脚本断言和提供的响应:

def xml = new XmlSlurper().parseText(messageExchange.response.responseContent)
List<groovy.util.slurpersupport.NodeChild> list =
        xml?.ResultSet?.Row?.collect{it.OBJ_ID + it.REL_OBJ_ID + it.CUST_MODEL_CD + it.TYPE_CD}
assert !(list.isEmpty())        
assert (list.size() == 3)   

答案 1 :(得分:1)

如果您的XML文档有效,您可以获得所有OBJ_ID的列表(作为示例),如下所示:

def xml = '''<Results>...</Results>'''
def results = new XmlSlurper().parseText(xml)
results?.ResultSet?.Row?.OBJ_ID.each {
    println(it)
}

以上代码应打印:

1371718
11983064
13613079

如果你想收集它们:

List objIds = results?.ResultSet?.Row?.OBJ_ID.collect{it}
println(objIds)

希望它有所帮助。