Jos*_*own 32 xml groovy xmlslurper
我正在尝试确定Groovy的XmlSlurper是否存在XML元素.有没有办法做到这一点?例如:
<foo>
<bar/>
</foo>
Run Code Online (Sandbox Code Playgroud)
如何检查条形元素是否存在?
Ted*_*eid 37
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()
Run Code Online (Sandbox Code Playgroud)
另一种方法是使用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())
Run Code Online (Sandbox Code Playgroud)
Jos*_*own 17
GPathResult上的isEmpty方法有效.
def text = "<foo><bar/></foo>"
def xml = new XmlSlurper().parseText(text)
assert false == xml.bar.isEmpty()
Run Code Online (Sandbox Code Playgroud)
这让我感到困扰,因为条形元素是空的 - 它没有身体.但我认为GPathResult不是空的,所以这可能是有道理的.
| 归档时间: |
|
| 查看次数: |
27884 次 |
| 最近记录: |