我需要找到动态生成Soap模拟响应的方法。我有一个请求示例(我们必须将字段elem放在listelem中):
请求
<soapenv:Level1>
<v1:listelem>
<v2:elem>
<v11:data1>?</v11:data1>
<v11:data2>?</v11:data2>
</v2:elem>
<v2:elem>
<v11:data1>?</v11:data1>
<v11:data2>?</v11:data2>
</v2:elem>
<v2:elem>
<v11:data1>?</v11:data1>
<v11:data2>?</v11:data2>
</v2:elem>
</v1:listelem>
</soapenv:Level1>在我的请求中,我可以找到从0到n元素的,我必须将这些数据转换成response,这个字段类似于:Response
<soapenv:Level1>
<v1:OtherData>
</v1:OtherData>
<v1:EvenOtherData>
</v1:EvenOtherData>
<v1:listelem>
<v2:elem>
<v11:data1>?</v11:data1>
<v11:data2>?</v11:data2>
<v11:respose>?</v11:respose>
</v2:elem>
<v2:elem>
<v11:data1>?</v11:data1>
<v11:data2>?</v11:data2>
<v11:respose>?</v11:respose>
</v2:elem>
<v2:elem>
<v11:data1>?</v11:data1>
<v11:data2>?</v11:data2>
<v11:respose>?</v11:respose>
</v2:elem>
</v1:listelem>
</soapenv:Level1>如何在响应中创建N个节点(名为element)?我必须在其他节点之后添加另一个节点。我试过用剧本来做这件事,但我没有成功。
发布于 2020-12-31 13:45:06
我在示例中添加了namsespace声明。
<soapenv:Level1 xmlns:soapenv="1" xmlns:v1="v1" xmlns:v2="v2" xmlns:v11="v11">在SOAP响应中尝试此脚本
def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context )
def holderRequest = groovyUtils.getXmlHolder( mockRequest.requestContent )
def holderResponse = groovyUtils.getXmlHolder( mockResponse.responseContent )
listelemRequest = holderRequest.getDomNode("//v1:listelem")
Level1Response = holderResponse.getDomNode("//soapenv:Level1")
listelemResponse = holderResponse.getDomNode("//v1:listelem")
//Coppy listelem from request to response
listelem = listelemResponse.getOwnerDocument().importNode(listelemRequest, true)
Level1Response.replaceChild(listelem,listelemResponse)
//List nodes of elements
nodes = holderResponse.getDomNodes("//v2:elem")
for(node in nodes){
def nodeHolder = groovyUtils.getXmlHolder("""<v11:response xmlns:v11="v11">?</v11:response>""")
def itemNode = nodeHolder.getDomNode("//v11:response" )
def responseElem = node.getOwnerDocument().importNode(itemNode,true)
node.appendChild(responseElem)
}
mockResponse.setResponseContent(holderResponse.getXml())脚本复制从请求到响应的列表,并添加项“响应”
https://stackoverflow.com/questions/65235320
复制相似问题