Как изменить XML на onRequestscript () в пользовательском интерфейсе SOAP - PullRequest
4 голосов
/ 27 марта 2012

Вот мой код, который я написал в 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 вместо этого. Но в соответствии с моей бизнес-логикой это неправильно ... Так что любой может помочь мне изменить xml в onRequestscript ....

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>

1 Ответ

2 голосов
/ 26 апреля 2012

Вы можете использовать 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)
...