我想,以确定是否与Groovy的存在的XmlSlurper XML元素。有没有办法做到这一点?例如:

<foo>
  <bar/>
</foo>

我如何检查杆构件是否存在?

有帮助吗?

解决方案

在API是有点扭曲,但我认为有几个更好的方法来寻找孩子。当你问“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())

其他提示

上GPathResult isEmpty方法的工作原理。

def text = "<foo><bar/></foo>"
def xml = new XmlSlurper().parseText(text)
assert false == xml.bar.isEmpty()

此我困扰,这是因为杆元件的空 - 它不具有体。但我想的GPathResult不是空的,所以也许这是有道理的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top