使用groovy dombuilder在soap信封内部时无法访问节点值

时间:2014-11-03 20:41:37

标签: soap groovy

目标:我有一个Soap Response消息,我需要验证特定的元素值。我想使用Groovy DOMBuilder。

如果我有这样的肥皂反应:

def xmlResponse =
            '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">\n' +
            '   <soap:Body>\n' +
            '      <ns1:getResponse xmlns:ns1="http://my.company.com">\n' +
            '         <return>value1</return>\n' +
            '\t\t <return>value2</return>\n' +
            '      </ns1:getResponse>\n' +
            '   </soap:Body>\n' +
            '</soap:Envelope>'

我使用以下代码:

def StringReader s = new StringReader(xmlResponse)
def xmldoc = groovy.xml.DOMBuilder.parse(s)
def elementName = xmldoc.documentElement
use (groovy.xml.dom.DOMCategory) {
            println elementName.return.size()
            println elementName.return[0].text()
        }

elementName.return.size()是0.如果我删除了我的回复的肥皂信封和肥皂体,我得到2的正确答案。我不知道我需要做什么,以便我得到正确的答案正确的信息。

如果可以提供帮助,请提前感谢您!

1 个答案:

答案 0 :(得分:0)

使用XmlSlurper代替它很容易/便宜:

def slurped = new XmlSlurper().parseText( xmlResponse ).Body.getResponse.'return'

assert slurped.size() == 2
assert slurped[0].text() == 'value1'