我如何检查元素的存在与Groovy的的XmlSlurper?
-
20-08-2019 - |
题
我想,以确定是否与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不是空的,所以也许这是有道理的。
不隶属于 StackOverflow