1

我正在处理模拟 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'}
4

1 回答 1

2

您可以使用 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)"]

whereSOAPService代表您正在调用的服务。有关详细信息,请参阅如何计算节点

使用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
于 2013-10-31T20:31:24.953 回答