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
我没有使用groovy的经验,我只需要一个脚本来返回“documentClass”标记的值(如果它包含X),然后获取下一个“documentId”标记内容您可以使用XMLSlurper来解析XML内容。通过API()可以获得更多信息,但获得所需信息的快速而肮脏的示例如下: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>
<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>