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 に答える