我有一个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()?
感谢
答案 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
节点有子节点或内容则不会