我正在尝试将XML响应节点值存储到字符串中。 回复:
<ReturnResourceItemResponse>
<ReturnResourceItemResult>
<countryID>1</countryID>
<resourceItemID>2000</resourceItemID>
<locationID>88</locationID>
<groupID>518</groupID>
<floor>1</floor>
<resourceID>1</resourceID>
<name>Hello</name>
</ReturnResourceItemResult>
</ReturnResourceItemResponse>
我想要的结果:
[2000, Hello, 1, 1, 88, 518, 1]
我尝试了什么:
def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context)
def holder = groovyUtils.getXmlHolder(messageExchange.responseContent)
def nodes = holder.getDomNodes( "//*:countryID" )
def XMLlist = []
for( node in nodes )
{
def value = com.eviware.soapui.support.xml.XmlUtils.getNodeValue( node )
XMLlist.add( value)
}
log.info "XML_List =" + XMLlist
我得到的结果:
XML_List =[1]
答案 0 :(得分:2)
注意到OP正在使用Script Assertion
进行请求步骤。
这是Script Assertion
,它声明响应并检索OP请求的数据。
脚本断言
//Retrieves the ReturnResourceItemResult
def getItemResult = { response ->
def parsedResponse = new XmlSlurper().parseText(response)
parsedResponse.'**'.find{it.name() == 'ReturnResourceItemResult' }
}
//Retrieves the data from Item result
def getItemResultData = { itemResult, elements ->
def result = []
elements.each { element ->
result << itemResult.'**'.find{it.name() == element} as String
}
result
}
//Assert if result is not empty or null
assert context.response, "Response data is empty or null"
//Defining the element order will have the better control on result order
def list = ['resourceItemID', 'name', 'countryID', 'resourceID', 'locationID', 'groupID', 'floor']
//Jus call the above closures to get the data
def data = getItemResultData(getItemResult(context.response), list)
//Show the result
log.info "Extracted data is :${data}"
你可以从这里快速测试 Demo
注意,必须使xml格式良好,所以改了一下。
希望这有用。
答案 1 :(得分:0)
将countryId替换为*
`
def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context)
def holder = groovyUtils.getXmlHolder(messageExchange.responseContent)
def nodes = holder.getDomNodes( "//*:*" )
def XMLlist = []
for( node in nodes )
{
def value = com.eviware.soapui.support.xml.XmlUtils.getNodeValue( node )
XMLlist.add( value)
}
log.info "XML_List =" + XMLlist
`
或者您可以使用
从节点获取所有值 def nodes = holder.getNodeValues( "//*:*" )