Web services 如何使用groovy在soapui中获取标记的值 A. {C6499CA4-18A8-C56B-84F5-6362E3F00000} Image.png 密码匙 29210242101077 Y {BC359D64-CC71-CC2B-877C-6362E4D00000} fileX.pdf X {0000000-000-000-0000-0000000000} filename.pdf

Web services 如何使用groovy在soapui中获取标记的值 A. {C6499CA4-18A8-C56B-84F5-6362E3F00000} Image.png 密码匙 29210242101077 Y {BC359D64-CC71-CC2B-877C-6362E4D00000} fileX.pdf X {0000000-000-000-0000-0000000000} filename.pdf,web-services,groovy,soapui,Web Services,Groovy,Soapui,我没有使用groovy的经验,我只需要一个脚本来返回“documentClass”标记的值(如果它包含X),然后获取下一个“documentId”标记内容您可以使用XMLSlurper来解析XML内容。通过API()可以获得更多信息,但获得所需信息的快速而肮脏的示例如下: <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body>

我没有使用groovy的经验,我只需要一个脚本来返回“documentClass”标记的值(如果它包含X),然后获取下一个“documentId”标记内容

您可以使用XMLSlurper来解析XML内容。通过API()可以获得更多信息,但获得所需信息的快速而肮脏的示例如下:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Body>
      <ns2:getAttachmentsByCaseIdResponse xmlns:ns2="http://soap.webservice.mod.sub.domain.com/">
         <return>
            <documentClass> A </documentClass>
            <documentId>{C6499CA4-18A8-C56B-84F5-6362E3F00000}</documentId>
            <filename>Image.png</filename>
            <props>
               <entry>
                  <key>CODE_KEY</key>
                  <value xsi:type="xs:string" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">29210242101077</value>
               </entry>
            </props>
         </return>
         <return>
            <documentClass> Y </documentClass>
            <documentId>{BC359D64-CC71-CC2B-877C-6362E4D00000}</documentId>
            <filename>fileX.pdf</filename>
            <props/>
         </return>
         <return>
            <documentClass>  X </documentClass>
            <documentId>{0000000-000-000-0000-0000000000}</documentId>
            <filename>filename.pdf</filename>
            <props/>
         </return>
      </ns2:getAttachmentsByCaseIdResponse>
   </soapenv:Body>
</soapenv:Envelope>

假设您的示例xml是名为TestRequest的请求的响应

​import groovy.util.XmlSlurper

def text = "" // your XML here
def slurp = new XmlSlurper().parseText(text)
slurp.Body.getAttachmentsByCaseIdResponse.return?.each {
    println "Class: ${it.documentClass}, ID: ${it.documentId}"
}
上述程序的输出为

def groovyUtils=new com.eviware.soapui.support.GroovyUtils(context)

 def xmlHolder=groovyUtils.getXmlHolder("TestRequest#Response")

def xml=  xmlHolder.getXml()

def parser=new XmlSlurper().parseText("xml")
def value=parser.'**'.findAll{it.documentClass.text()=="X"}.collect{it.documentId.text()}

log.info value.toString()
逻辑解释

首先将响应转换为名为“xml”的变量中的xml,然后使用XmlSlurper根据documentClass检索id。“it”是一个检查所有输入的groorvy变量

如果您有如下输入,即空格,您可能需要修剪或给出如下输入

Wed May 16 10:51:42 IST 2018:INFO:[{0000000-000-000-0000-0000000000}]
it.documentClass.text()=“X”
X
  it.documentClass.text()=="  X  "

 <documentClass>  X </documentClass>