【问题标题】:Java XPath returns single result instead of NodeSetJava XPath 返回单个结果而不是 NodeSet
【发布时间】:2015-09-09 07:45:16
【问题描述】:

我正在尝试在 Java 中创建一个 XPath 表达式(8,默认 XPath 实现)。我正在执行以下操作:

Object res = xpath.evaluate("(//*[local-name()='PartyId'])", requestDom, XPathConstants.NODESET);

我在同一级别的文档中有多个 PartyId 节点,因为它的父节点在重复。我得到了结果,但只有一个节点。 (第一个)。

附加信息:如果我在表达式的末尾写 [$k],例如 [1] 或 [2],我得到了我的元素,但我需要所有这些元素。 :(

但是,如果我在 http://www.freeformatter.com/xpath-tester.html 测试相同的 XPath,我会得到多个结果,这是预期的结果。 有什么想法吗?

附言我试图将 Saxon 放在类路径中,但它完全破坏了我的应用程序(Spring-Boot WS)。

非常感谢!

更新 我没有正确检查结果,它是绝对正确的。

【问题讨论】:

  • 你能展示告诉你你只得到一个节点的java代码吗?
  • 还有一些你的 XML 文件的例子。
  • @LarsH 我用调试器工具检查了输出,但也许我误解了我所看到的 - 现在检查。将提供更新

标签: java xml dom xpath


【解决方案1】:

我的猜测是您在处理结果NodeList 时犯了一个错误。尝试以下方法:

NodeList results = (NodeList) xpath.evaluate(..);
for (int i = 0; i < nodelist.getLength(); i++) {
    Node node = (Node) nodelist.item(i);
    ...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-15
    相关资源
    最近更新 更多