很抱歉把一个笑脸问题发到我之前的Using Groovy Script in sopaUI - Copy the content of a XML Holder to Another (Trying to CLONE the SOAP request Test Step)上
在我之前的问题中,我刚刚意识到我没有提到我对CDATA ...which的担忧,我认为这可能会误导其他人,让他们知道我真正关心的是什么。我的错!!
重申我所做的一切。
SoapRequest (原件)
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:idm="http://vedaxml.com/vxml2/idmatrix-v2-0.xsd">
<soapenv:Header/>
<soapenv:Body>
<idm:request>
<idm:dataset-searches>
<idm:profile-name></idm:profile-name>
</idm:dataset-searches>
<idm:individual-name>
<idm:family-name>ABC</idm:family-name>
<idm:first-given-name>DEF</idm:first-given-name>
</idm:individual-name>
<idm:date-of-birth>1985-12-12</idm:date-of-birth>
</idm:request>
</soapenv:Body>
</soapenv:Envelope>我的Groovy脚本如下所示
def grUtils = new com.eviware.soapui.support.GroovyUtils(context)
def ReqHolder2 = grUtils.getXmlHolder("Modified#Request")
ReqHolder2.removeDomNodes("//idm:request")
ReqHolder2.updateProperty()
ReqHolder2 ["//soapenv:Body"] = context.expand( '${Original#Request#//idm:request}' )
ReqHolder2.updateProperty()当我执行上面的groovy脚本时,修改后的请求将被更新为原始请求中的内容,但是更新后的内容在CDATA和对模式的引用中。
SoapRequest (改性)
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:idm="http://vedaxml.com/vxml2/idmatrix-v2-0.xsd">
<soapenv:Header/>
<soapenv:Body>***<![CDATA[<idm:request xmlns:idm="http://vedaxml.com/vxml2/idmatrix-v2-0.xsd">***
<idm:dataset-searches>
<idm:profile-name/>
</idm:dataset-searches>
<idm:individual-name>
<idm:family-name>ABC</idm:family-name>
<idm:first-given-name>DEF</idm:first-given-name>
</idm:individual-name>
<idm:date-of-birth>1985-12-12</idm:date-of-birth>
</idm:request>**]]>**</soapenv:Body>
</soapenv:Envelope>请您建议我如何避免在CDATA中更新XML。而是正确地更新XML。好心的建议。
发布于 2012-07-25 19:15:42
将修改后的请求更改为:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:idm="http://vedaxml.com/vxml2/idmatrix-v2-0.xsd">
<soapenv:Header/>
<soapenv:Body>${test123}</soapenv:Body>
</soapenv:Envelope>并将groovy更改为:
def grUtils = new com.eviware.soapui.support.GroovyUtils(context)
def ReqHolder2 = grUtils.getXmlHolder(context.expand( '${Original#Request#//idm:request}' ))
context.setProperty("test123", ReqHolder2.getXml())
testRunner.runTestStepByName( "Modified")
log.info(grUtils.getXmlHolder(context.expand( '${Modified#Request}')).getPrettyXml())如果将日志复制并粘贴到文本编辑器中,您将看到:
Wed Jul 25 13:11:20 MDT 2012:INFO:<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:idm="http://vedaxml.com/vxml2/idmatrix-v2-0.xsd">
<soapenv:Header/>
<soapenv:Body>
<idm:request>
<idm:dataset-searches>
<idm:profile-name/>
</idm:dataset-searches>
<idm:individual-name>
<idm:family-name>ABC</idm:family-name>
<idm:first-given-name>DEF</idm:first-given-name>
</idm:individual-name>
<idm:date-of-birth>1985-12-12</idm:date-of-birth>
</idm:request>
</soapenv:Body>
</soapenv:Envelope>https://stackoverflow.com/questions/11650828
复制相似问题