Java XPath返回单个结果而不是NodeSet

时间:2015-06-23 13:22:10

标签: java xml dom xpath

我试图在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,我会得到多个结果,这是预期的结果。 有什么想法吗?

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

非常感谢!

更新 我没能正确检查结果,这是完全正确的。

1 个答案:

答案 0 :(得分:2)

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

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