开始使用SoapUI,无法了解如何使用Groovy处理Soap响应。 目前我的项目在NetBeans中打开,并且在debuging之后将被复制粘贴到SoapUI(eviware) 我的问题是:
def Input = """ <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> <S:Body>
<ns2:getSalesAuditsResponse xmlns:ns2="http://apidto.dto.t2.wsapi.ng.com/">
<return>
<code>0909019000004830</code>
<realOpenAmount>12</realOpenAmount>
<dueDate>2009-07-11T00:00:00+03:00</dueDate>
</return>
<return>
<code>0909119000006260</code>
<realOpenAmount>55.75</realOpenAmount>
<dueDate>2007-02-11T00:00:00+02:00</dueDate>
</return>
</ns2:getSalesAuditsResponse> </S:Body> </S:Envelope>
"""
如何找到具有特定dueDate的“return”节点? 我可以假设,它可能接近下一个:
def document = new groovy.util.XmlSlurper().parseText(Input);
def sa = document.depthFirst().findAll { it.@dueDate=="2007-02-01T00:00:00+02:00" }
但在这种情况下,sa是[]。 毕竟如何删除原始XML中找到的节点?
我正在尝试使用XMLHolder,但不知道如何在Netbeans“context”变量中初始化它,它在SoapUI中确实存在。
def groovyUtils = new com.eviware.soapui.support.GroovyUtils(??? context ???) def dataHolder = groovyUtils.getXmlHolder(输入) def data = dataHolder.getDomNode(“// return [dueDate =”2007-02-11T00:00:00 + 02:00“]”)
最后一般问题: 是否可以在NetBeans中调试groovy脚本并在以后的SoapUI 3.0.1中使用它? 或者根据需要为groovy_for_SoapUI提供代码自动完成和doc?
非常感谢
答案 0 :(得分:0)
它。@ dueDate引用了“dueDate”属性,而不是节点。其次,你在代码中寻找“2007-02-01 ...”,它应该是“2007-02-11 ...”以匹配输入XML中的实际节点,我猜。
所以,这确实有效:
def Input = """ <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:getSalesAuditsResponse xmlns:ns2="http://apidto.dto.t2.wsapi.ng.com/">
<return>
<code>0909019000004830</code>
<realOpenAmount>12</realOpenAmount>
<dueDate>2009-07-11T00:00:00+03:00</dueDate>
</return>
<return>
<code>0909119000006260</code>
<realOpenAmount>55.75</realOpenAmount>
<dueDate>2007-02-11T00:00:00+02:00</dueDate>
</return>
</ns2:getSalesAuditsResponse>
</S:Body>
</S:Envelope>
"""
def document = new groovy.util.XmlSlurper().parseText(Input);
def sa = document.depthFirst().findAll {it.dueDate == "2007-02-11T00:00:00+02:00"}
如果我打算修改XML,我想我最终会使用标准的MarkupBuilder或StreamingMarkupBuilder以我想要的形式输出新的XML。