尝试从REST响应(SOAPUI)中提取以下值

时间:2017-01-23 14:57:21

标签: groovy soapui

我有以下SOAPUI休息输出:

<html>
   <head>
      <meta content="HTML Tidy for Java (vers. 26 Sep 2004), see www.w3.org" name="generator"/>
      <title/>
   </head>
   <body>
      {"message":{},"records":[{"Application Name_2":"DO NOT DELETE: QA Regression Test","Status ID_5":"13160","Email_6":"","ListFiles Webservices_4":"
      <a download="download" href="/" target="_blank">Test.txt&lt;\/a>,</a>
      <a download="download" href="/" target="_blank">TestTwo.txt&lt;\/a>","# Index_1":"1","DownloadFile Webservices_3":"</a>
      <a download="download" href="/" target="_blank">Test.txt&lt;\/a>"}],"header":[{"index":"1","name":"# Index","numformat":"","type":"string"},{"index":"2","name":"Application Name","numformat":"","type":"string"},{"index":"3","name":"DownloadFile Webservices","numformat":"","type":"string"},{"index":"4","name":"ListFiles Webservices","numformat":"","type":"string"},{"index":"5","name":"Status ID","numformat":"","type":"string"},{"index":"6","name":"Email","numformat":"","type":"string"}]}</a>
   </body>
</html>

我正在尝试提取Test.txt但无法提取。

这就是我的尝试:

//imports
import groovy.json.JsonSlurper

//grab the response
def ResponseMessage = messageExchange.response.responseContent
//define a JsonSlurper
def jsonSlurper = new JsonSlurper().parseText(ResponseMessage)

def FieldDownloadFile = jsonSlurper.records.'DownloadFile Webservices_3'
log.info FieldDownloadFile

这就是我能够提取的内容:

[<a target=_blank href="/files/spool/493500/1133476/1_2866521_1133476_Test.txt?fs=1" download>Test.txt</a>]

但我只想提取 - Test.txt

1 个答案:

答案 0 :(得分:1)

您要解析的值是来自某个 Json 元素的任意字符串值,因此没有标准方法直接使用slurper。

在您的情况下,例如,因为您的字符串值是 Xml ,您可以使用XmlSlurper再次解析它以获得所需的值。以下是您案例的简化示例:

import groovy.json.JsonSlurper

def message = '''
 {"message":{},"records":[
    {"DownloadFile Webservices_3":"<a download='download' href='/' target='_blank'>Text.txt</a>"}]}

'''

def jsonSlurper = new JsonSlurper().parseText(message)
def fieldDownloadFile = jsonSlurper.records.'DownloadFile Webservices_3'

// since <a> is the root of your xml you can access the value without
// any path, if your xml was more complex you need a path like JsonSlurper
def anchorValue =  new XmlSlurper().parseText(fieldDownloadFile)

log.info anchorValue // prints Text.txt