我正在处理模拟Web服务请求。鉴于下面的Web服务请求,如何使用Groovy确定“ns3:data”元素的出现次数?感谢。
<ns1:foo>
<ns3:data>
<ns3:CustomerNumber>123</ns3:CustomerNumber>
</ns3:data>
<ns3:data>
<ns3:CustomerNumber>456</ns3:CustomerNumber>
</ns3:data>
</ns1:foo>
我尝试了以下操作,但它不起作用。
def req = new XmlSlurper().parseText(mockRequest.requestContent)
def numberOfPayments = req.depthFirst().findAll { it.name() == 'Payment'}
答案 0 :(得分:1)
您可以使用SOAPUI中的XmlHolder来计算节点数。
def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context)
def holder = groovyUtils.getXmlHolder("SOAPService#Request")
holder.namespaces['ns3'] = "namespace corresponding to ns3 goes here"
def numberOfData = holder["count(ns://data)"]
其中SOAPService
表示您正在调用的服务。有关详细信息,请参阅how to count nodes。
使用XmlSlurper
(假设声明了命名空间ns1和ns3):
def xml = """
<ns1:foo xmlns:ns1="dummy" xmlns:ns3="dummy2">
<ns3:data>
<ns3:CustomerNumber>123</ns3:CustomerNumber>
</ns3:data>
<ns3:data>
<ns3:CustomerNumber>456</ns3:CustomerNumber>
</ns3:data>
</ns1:foo>
"""
def req = new XmlSlurper().parseText(xml)
def numberOfPayments = req.data.size()
assert numberOfPayments == 2