使用XPath查询提取XML

使用XPath查询提取XML,xml,xpath,groovy,Xml,Xpath,Groovy,基于我问过的其他问题的帮助,我得到了以下groovy代码片段: NodeList nodes = (NodeList)xpath.evaluate( xpathQuery, records, XPathConstants.NODESET ); return nodes.collect { node -> node.getTextContent() } 它允许我对记录执行xpathQuery,并获得结果 我现在要做的是返回结果的原始xml(而不是文本内容)(我意识到这不会生成有效的xml文

基于我问过的其他问题的帮助,我得到了以下groovy代码片段:

NodeList nodes = (NodeList)xpath.evaluate( xpathQuery, records, XPathConstants.NODESET );
return nodes.collect { node -> node.getTextContent() }
它允许我对
记录执行
xpathQuery
,并获得结果

我现在要做的是返回结果的原始xml(而不是文本内容)(我意识到这不会生成有效的xml文档)

以便:

xml = "<root><apple><color>RED</color></apple>…</root>"
xpathQuery = "/root/apple[1]"
xml=“红色…”
xpathQuery=“/root/apple[1]”
将返回:

"<apple><color>RED</color></apple>"
“红色”
(没有附带的
标签也可以)。有没有一个简单的方法可以做到这一点


或者如果做不到这一点,还有其他方法可以实现吗?

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

使用以下命令:

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

concat('函数来迭代节点,创建字符串填充,并将它们与原始的
//root/apple[1]组合起来/颜色
result.

根据使用的XPath引擎/API,返回的XmlNode应该具有outerXml属性——例如.NET XmlNode类型:或者,如果使用XSLT,只需使用
。我使用的是javax.xml.XPath,它似乎没有outerXml属性