2017-01-23 76 views
0

以下值我有以下SOAPUI其余输出:试图从REST的响应(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

似乎有多个地方,您想要哪一个地方? – Rao

+0

@rao,有可能有第一个吗? – user7242550

回答

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