使用XPath查询提取XML

时间:2012-01-04 11:51:36

标签: xml xpath groovy

根据我提出的其他问题的帮助,我有这个常规的片段:

NodeList nodes = (NodeList)xpath.evaluate( xpathQuery, records, XPathConstants.NODESET );
return nodes.collect { node -> node.getTextContent() }

允许我在xpathQuery上执行records并获得结果。

我现在要做的只是返回(作为字符串)结果的原始xml(而不是文本内容)(我意识到这不会产生有效的xml文档)。

这样:

xml = "<root><apple><color>RED</color></apple>…</root>"
xpathQuery = "/root/apple[1]"

将返回:

"<apple><color>RED</color></apple>"

(没有封闭的<apple>标签也没问题。有一种简单的方法可以做到这一点吗?

或者失败了,还有另一种方法可以达到这个目的吗?

1 个答案:

答案 0 :(得分:1)

这不是很优雅,但可能有用:

使用此:

concat('<apple><color>', //root/apple[1]/color, '</color></apple>')

如果您知道结构不会改变,或者<apple>中的子元素数量更复杂,请使用:

//root/apple[1]/node()为您提供所有子节点,并使用groovy的.each函数迭代节点,并创建字符串填充,并将它们与原始//root/apple[1]/color结果组合。 / p>