如何断言 xml 个节点

how to assert for xml nodes

我有一个关于断言 xml 节点的问题,想看看可以执行断言的不同场景。

下面我有一个 xml 包含警告 xml 标签:

<soap:Envelope xmlns:soap="xxx" xmlns:xsi="xxx" xmlns:xsd="xxx">
   <soap:Body>
      <xxxxmlns="xxx">
         <xxxUrl="xxx" TimeStamp="2017-03-16T12:36:01.8215426+00:00" IntCode="xxx">
            <Warnings>
               <Warning Code="xxx" Text="Price changed. Use the new RatePlanCode or BookingCode"/>
            </Warnings>

我想执行几种不同类型的断言,以了解如何在 xml:

中断言不同的功能

这些只是单独的检查,所以我可以看看它们是如何工作的。下面是一个示例代码,我想在其中检查是否存在警告标记,但我得到的是空响应:

def WarningCodes = xml.'soap:Body'.xxx[0].xxx[0].Warnings[0].Warning*.@Code

因此,让它们按顺序排列:

1) 检查 xml 是否包含警告 xml 标签

如果您使用的是 XmlSlurper:

xml.'**'.any { it.name() == 'Warning' }

如果您使用的是 XmlParser:

xml.'**'.any { it.name().localPart == 'Warning' }

2) 检查是否有任何警告标签包含等于 warnPriceChanged

的代码

如果您使用的是 XmlSlurper:

xml.'**'.findAll { it.name() == 'Warning' }.any { it.@Code == 'warnPriceChanged' }

如果您使用的是 XmlParser:

xml.'**'.findAll { it.name().localPart == 'Warning' }.any { it.@Code == 'warnPriceChanged' }