2012-03-27 50 views
4

這裏是我的代碼,我在onRequestscript如何在SOAP UI修改onRequestscript()的XML

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(東西.XML)..

我其實是不能夠修改XML,所以我想changinf的XML instead.But根據我的業務邏輯錯誤做法。所以任何一個可以幫我修改XML 在onRequestscript ....

XML like

<Something> 
    <Data1> 
     <value>100</value> 
    <Data1> 
    <Data2> 
     <value>200</value> 
    <Data2> 
</Something> 

到修改這樣

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

您能否提供XML示例以及它如何更改? 另外,我會假設Web服務對象不會更改XML的內容?!?! – MeIr 2012-04-22 03:10:00

+0

我更新了我的問題... – 2012-04-23 04:58:34

+0

我很抱歉,但我不明白修改。你想把空間/選項卡放在根節點上?什麼目的? Web服務通常不關心空間和類似的東西。 – MeIr 2012-04-26 02:11:31

回答

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) 
+1

它看起來正確。 – MeIr 2012-04-26 11:42:48

+0

Thnks你們倆:) – 2012-04-26 14:25:31