【发布时间】:2012-10-12 20:14:15
【问题描述】:
我有这个 Groovy 代码可以使用 xpath 字符串删除节点,但是我在删除 xpath 导致多个节点实例的节点时遇到问题。
示例 XML...
<root>
<element1>foo</element1>
<element2>bar</element2>
<items>
<item>
<name>a</name>
<desc>b</desc>
<item>
<item>
<name>c</name>
<desc>x</desc>
</item>
</items>
</root>
删除节点的代码...
def resource = XmlSlurper().parseText(xml)
def xpathsToDelete = ['/root/element1','/root/items/item/name']
xpathsToDelete.each {
def pathTokens = it.path.tokenize '/'
def currentNode = resource
if ( currentNode.name() == pathTokens.first() ) {
def xpath = pathTokens.tail().join '/'
currentNode = currentNode."${xpath}"
currentNode.replaceNode{}
}
}
上面的代码使用 xpath /root/element1 删除节点 element1,它计算为单个节点,但不适用于计算为多个节点的 /root/items/name。
【问题讨论】:
-
它会给你一个例外吗?
-
不,它只是不处理循环节点,我以为我为它编码,但我想我的逻辑不正确