我试图在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)。
非常感谢!
更新 我没能正确检查结果,这是完全正确的。
答案 0 :(得分:2)
我的猜测是你在处理结果NodeList
时犯了一个错误。尝试以下方法:
NodeList results = (NodeList) xpath.evaluate(..);
for (int i = 0; i < nodelist.getLength(); i++) {
Node node = (Node) nodelist.item(i);
...
}