如何在脚本断言中获取特定父元素的子元素?

How to pick up child element of specific parent element in Script Assertion?

我有以下 XML 示例,该示例显示节点 'ProductCode' 多次出现在两个节点 'PrevHospProduct' 和 'PrevExtrasProducts'.[=13 下=]

                <ns2:PrevHospProducts>
                    <ns2:PrevHospProduct>
                       <ns2:ProductCode>D00</ns2:ProductCode>
                       <ns2:ExcessPaid>Yes</ns2:ExcessPaid>
                    </ns2:PrevHospProduct>
                    <ns2:PrevHospProduct>
                       <ns2:ProductCode>900</ns2:ProductCode>
                    </ns2:PrevHospProduct>
                 </ns2:PrevHospProducts>
                 <ns2:PrevExtrasProducts>
                    <ns2:PrevExtraProduct>
                       <ns2:ProductCode>00A</ns2:ProductCode>
                    </ns2:PrevExtraProduct>
                 </ns2:PrevExtrasProducts>

对于此测试,我只对 'ProductCode' 中的值感兴趣,它们是 'PrevHospProduct' 的子项。我对 'PrevExtrasProducts'.

下的任何值都不感兴趣

我有以下 Groovy Script Assertion in SoapUI 来获取 'ProductCode' 中的值,但测试失败,因为实际结果也从 'D00'、'900' 和 '00A' 返回示例响应。我只希望预期结果选择值 'D00', '900'.

def expectedCodes = ['D00','900'] 
def pxml = new XmlSlurper().parseText(context.response)
def actualCodes = pxml.'**'.findAll{it.name() == 'ProductCode' }*.text() as List
assert expectedCodes.sort() == actualCodes.sort()

首先需要找到父节点即PrevHospProduct然后得到ProductCode.

这里是 script assertion:

def expectedCodes = ['D00','900'] 
def pxml = new XmlSlurper().parseText(context.response)
def actualCodes = pxml.'**'.findAll{it.name() == 'PrevHospProduct'}*.ProductCode*.text() as List
log.info actualCodes
assert expectedCodes.sort() == actualCodes.sort()