我正在尝试确定 XML 元素是否存在于 Groovy 的 XmlSlurper 中。有没有办法做到这一点?例如:
<foo>
<bar/>
</foo>
如何判断bar元素是否存在?
最佳答案
API 有点古怪,但我认为有一些更好的方法来寻找 child 。当您要求“xml.bar”(存在)或不存在的“xml.quux”时,您得到的是 groovy.util.slurpersupport.NodeChildren目的。基本上是满足您要求的标准的节点集合。
查看特定节点是否存在的一种方法是检查 NodeChildren 的大小是否为预期大小:
def text = "<foo><bar/></foo>"
def xml = new XmlSlurper().parseText(text)
assert 1 == xml.bar.size()
assert 0 == xml.quux.size()
另一种方法是使用 find 方法并查看返回的节点名称(不幸的是总是返回一些东西),是否是您所期望的:
def text = "<foo><bar/></foo>"
def xml = new XmlSlurper().parseText(text)
assert ("bar" == xml.children().find( {it.name() == "bar"})?.name())
assert ("quux" != xml.children().find( {it.name() == "quux"})?.name())
关于xml - 我如何使用 Groovy 的 XmlSlurper 检查元素是否存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/480431/