子树上的xpath搜索

我需要将xpath节点搜索限制为子树。 我目前正在使用下面的方法,但它会在整个文档中搜索我是否给它文档或我要搜索的节点。

private NodeList findNodes(Object obj,String xPathString) throws ... { XPath xPath = XPathFactory.newInstance().newXPath(); XPathExpression expression = xPath.compile(xPathString); return (NodeList) expression.evaluate(obj, XPathConstants.NODESET); } 

我现在使用的解决方案是创建新文档,附加节点并搜索新文档,然后合并。 我想改进这个。 可以吗?

我正在使用的XPath是//nodeName

你正在查看//轴,这意味着’文档根的任何后代节点’,

将其更改为.// axis(上下文节点的后代),它将按预期工作。

您需要区分 绝对相对 XPath表达式

好问题+1。

在XPath中,任何以/开头的表达式都是绝对的XPath表达式 。 在完整的当前文档上评估绝对XPath表达式。

相反,在当前(上下文)节点之外评估相对 XPath表达式。

这解释了报告的问题//nodeName是一个绝对的XPath表达式。

你想要的是一个相对的XPath表达式 ,例如:

 .//nodeName 

.//nodeName将在给定的上下文节点中的任何位置搜索nodeName元素。