如何将 XPath 添加到 XmlSlurper

How to add XPath to XmlSlurper

我正在尝试在 SoapUI 中创建一个 groovy 脚本断言。在响应中,我试图拉出一个名为 written 的字段。但是,这些字段中有 +15 个。

我可以将 XPath 添加到 XmlSlurper 以找到我想要断言的确切写入字段。

查看下面的 XML 响应,我想断言 b:premium\written 中的值。不是来自 b:other 的那个。鉴于有 15+ b:written 个字段,我想使用 xpath 断言该值。

XML 响应:

<s:Body>
    <NewRateResponse>
        <NewRateResult>
            <b:policies>
                 <b:other>
                     <b:written>00.00</b:written>
                 </b:other>
                 <b:premium>
                     <b:written>31.21</b:written>
                 </b:premium>
            </b:policies>
        </NewRateResult>
    </NewRateResponse>
</s:Body>

断言代码:

import org.junit.Assert
def response = messageExchange.getResponseContent()
def xml = new XmlSlurper().parseText(response)
def nodePremium = xml.'**'.find { it.name() == 'written'}
Assert.assertEquals(00.01, nodePremium.toDouble(),0)

我认为我们需要更改的区域是 def nodePremium = xml.'**'.find { it.name() == 'written'}。成为 def nodePremium = xml.'**'.find { it.name() == 'premium\written'} 之类的东西,但这对我不起作用。

assert xml.'**'.find { it.name() == 'premium'}.written.text() as Double == 31.20