繁体   English   中英

子树上的 xpath 搜索

[英]xpath search on subtree

我需要将 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

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

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

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

好问题+1。

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

相比之下,相对XPath 表达式是在当前(上下文)节点之外计算的。

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

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

.//nodeName

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM