【问题标题】:xpath search on subtree子树上的 xpath 搜索
【发布时间】:2012-01-11 15:21:17
【问题描述】:

我需要将 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
  • 我认为必须在 XPath 表达式中进行限制。

标签: java xml xpath


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    好问题 +1。

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

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

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

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

    .//nodeName
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2021-06-11
        • 2014-10-18
        • 1970-01-01
        • 2013-01-18
        • 2013-01-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-03
        相关资源
        最近更新 更多