2015-06-23 2 views
1

Я пытаюсь создать выражение XPath в Java (8, реализация по умолчанию XPath). Я делаю следующее:Java XPath возвращает один результат вместо NodeSet

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

У меня есть несколько узлов PartyId в документе на том же уровне, потому что родитель повторяет. Я получил свой результат, но только один узел. (первый).

Боковая информация: если я напишу [$ k] в конце выражения, например [1] или [2], я получил свои элементы, но мне нужны все они. :(

Однако, если я испытывать тот же XPath, например в http://www.freeformatter.com/xpath-tester.html я получаю несколько результатов, который является ожидаемым результатом. Любые идеи?

пс я попытался поставить Saxon на пути к классам, но она полностью разбивает мое приложение (Spring-Boot WS).

Спасибо большое!

UPDATE я не смог правильно проверить результат, и это было абсолютно правильным.

+1

Вы можете показать код java, который сообщает вам, что вы получаете только один узел? – LarsH

+0

А также пример вашего XML-файла. – crigore

+0

@LarsH Я проверил вывод с помощью инструмента отладчика, но, возможно, я неправильно понял то, что увидел - сейчас проверяю. Будет предоставлять обновление – gyorgyabraham

ответ

2

Я предполагаю, что вы ошибаетесь при обработке результата NodeList. Попробуйте выполнить следующий подход:

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

Это сработало, спасибо – gyorgyabraham

Смежные вопросы