如何在SOAP UI的onRequestscript()函数中修改XML

4

这是我在onRequestscript中编写的代码:

def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context)
path = "D:\\Service\\something2.xml";
log.info("path = "+ path);
if (mockRequest.method == "POST" )
{
mockRunner.returnFile( mockRequest.httpResponse, new File(path))
return new com.eviware.soapui.impl.wsdl.mock.WsdlMockResult(mockRequest)
}

但是这个脚本会完全改变我的XML……我想修改一个已经存在的XML(something.xml)……
我实际上无法修改XML,所以我想改变XML。但根据我的业务逻辑,这是错误的……所以有人能帮我在onRequestscript中修改XML吗?
XML如下:
<Something>
    <Data1>
      <value>100</value>
    <Data1>
    <Data2>
      <value>200</value>
    <Data2>
</Something>

将其修改为如下所示:

进行如下修改

    <Something>
    <Data1>
      <value>101</value>
    <Data1>
    <Data2>
      <value>201</value>
    <Data2>
</Something>

你能提供一个XML的例子并说明它是如何被修改的吗? 另外,我认为Web服务对象不会改变XML的内容,对吗?!? - MeIr
很抱歉,我不理解修改的意思。您想在根节点上放置空格/制表符吗?这有什么目的呢?Web服务通常不关心空格和类似的东西。 - MeIr
哦...我看到你想要更改节点中的值... 让我明天来看看。 - MeIr
1个回答

2
你可以使用 XmlSlurper 解析和更新 XML 文件中的值。然后从更新后的 XML 生成字符串,并将其设置为模拟服务响应的一部分。
我使用免费的 SoapUI 3.6.1,但它的输出对象似乎与你的示例不同。请根据你的需求修改代码。
// get and parse XML file content
path = "D:\\Service\\something2.xml";
def doc = new XmlSlurper().parse(path)

// update values
doc.Data1.value[0] = 101
doc.Data2.value[0] = 201

// generate and return XML string as service response
import groovy.xml.StreamingMarkupBuilder
def result = new StreamingMarkupBuilder().bind{ mkp.yield doc  }.toString()
mockResponse.setResponseContent(result)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接