XML Slurper如何检查元素是否存在

时间:2017-05-21 13:00:15

标签: xml groovy

我有一个xml文档如下......

<?xml version="1.0" encoding="UTF-8"?>
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">
  <s:Body>
    <Response xmlns="http://www.goo.com/2015/07">
      <Result xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
      </Result>
    </Response>
    </s:Body>
</s:Envelope>

使用Groovy xml slurper我会执行以下操作。

if (payload) {
    responsePayload = new groovy.util.XmlSlurper().parseText payload
}

这是有效的,它传递所有带有文本的元素。但我无法弄清楚如何检查Result元素是否存在。

我有办法做这样的事吗?

responsePayload.Envelope.Body.Response.exists() or maybe check the size()?

感谢

1 个答案:

答案 0 :(得分:1)

您需要检查GPathResult的{​​{1}}是否为空:

.Body.Response.Result

如果在responsePayload.Body.Response.Result.isEmpty() 下找不到true个节点,则会返回Result,否则会Response

编辑以澄清此VS您的期望:
- false已经代表根元素responsePayload,因此Envelope会产生空结果 - responsePayload.Envelope将始终返回responsePayload.Body.Response.Result.isEmpty(),因为这会询问&#34;是否有false个元素?&#34;,如果Body > Response > Result节点有子节点或内容则不会