如何断言xml节点

时间:2017-03-21 14:43:53

标签: groovy soapui

我有一个关于断言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中声明不同的功能:

  • 检查xml是否包含警告xml标记
  • 检查是否有任何警告标记包含等于warnPriceChanged的代码

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

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

1 个答案:

答案 0 :(得分:1)

所以,按顺序接受它们:

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

如果你正在使用XmlSlurper:

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

如果你正在使用XmlParser:

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

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

如果你正在使用XmlSlurper:

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

如果你正在使用XmlParser:

<asp:CustomValidator
  ID="CustomValidator" runat="server"
  OnServerValidate="CustomValidator_ServerValidate"
  Forecolor="Red" Display="dynamic"
  style="margin-top:10px; margin-bottom:10px"
  ValidationGroup="test">