我试图通过添加具有不同的值重复子节点修改SOAP请求。SOAPUI:修改请求:Groovy:在appendNode适用参数
这是我到目前为止有:
请求:
<soapenv:Envelope xlmns:ns1 = "..." xlmns:ns2 = "..." xlmns:ns3 = "..." xlmns:ns4 = "...">
<soapenv:Body>
<ns2:OperationName>
<ns3:CuteN>77777</ns3:CuteN>
<ns3:RaveN>666</ns3:RaveN>
</ns2:OperationName>
</soapenv:Body>
</soapenv:Envelope>
请求修改为:(填写XML标记&添加另一个标签<RaveN></RaveN>
一个值)
<soapenv:Envelope xlmns:ns1 = "..." xlmns:ns2 = "..." xlmns:ns3 = "..." xlmns:ns4 = "...">
<soapenv:Body>
<ns2:OperationName>
<ns3:CuteN>77777</ns3:CuteN>
<ns3:RaveN>666</ns3:RaveN>
<ns3:RaveN>888</ns3:RaveN>
</ns2:OperationName>
</soapenv:Body>
</soapenv:Envelope>
使用
代码:
/* Groovy Utilities Declaration */
def groovyUtils = new ns4.eviware.soapui.support.GroovyUtils(context)
/* Request Holder Setup */
def request = context.expand('${RequestStepName#Request}')
def requestHolder = groovyUtils.getXmlHolder("request")
/* Declaring Namespaces */
requestHolder.namespaces["soapenv"] = "http://schemas.xmlsoap.org/soap/envelope/"
requestHolder.namespaces["ns2"] = "..."
requestHolder.namespaces["ns3"] = "..."
requestHolder.namespaces["ns4"] = "..."
/* Set few string names */
def soapEnvXString = "//soapenv:Envelope"
def soapBodyXString = "/soapenv:Body"
def operXString = "/ns2:OperationName"
def raveNumXString = "/ns3:RaveNum"
/* create object of Request nodes */
def parentNode = requestHolder.getDomNode(soapEnvXString + soapBodyXString + operXString)
def reqRaveNumTwo = "888"
if(reqRaveNumTwo != null && reqRaveNumTwo != "")
{
/* create new node */
def secondRaveNumNode = new XmlSlurper(false,false).parseText("""<ns3:RaveNum>${reqRaveNumTwo}</ns3:RaveNum>""")
parentNode.appendNode(secondRaveNumNode)
}
/* Update the request holder properties */
requestHolder.updateProperty(true)
错误:
groovy.lang.MissingMethodException: No signature of method: org.apache.xmlbeans.impl.store.Xobj$ElementXobj.appendNode() is applicable for argument types: (groovy.util.slurpersupport.NodeChild) values: [888]
我知道我失去了一些东西,这是我的Groovy深潜的第3天。任何帮助将不胜感激,提前致谢!
此问题已通过@Albciff回答。有报道说,我对上面的代码做得到它的实际工作一些变化。更新后的代码如下。 – ssc 2015-04-06 15:49:52