Java: как выполнить запрос XPath на узле

Итак, я читаю из XML-файла со многими уровнями вложенности в Java, используя xPath.

На данный момент у меня есть метод, который принимает путь к файлу XML и запрос xpath в качестве параметров и возвращает NodeIterator.

Затем я перебираю эти узлы, и для некоторых узлов (если их имена совпадают) мне нужно выполнить для них другой запрос и получить NodeIterator их дочерних элементов и т. д.

Возможно ли иметь функцию с двумя параметрами, один из которых — уже существующий узел, а другой — запрос xPath для выполнения на этом узле?

Итак, заменяем:NodeIterator ni = XPathAPI.selectNodeIterator(document,xpathQuery); на некоторые вроде: NodeIterator ni2 = xPathAPI.selectNodeIterator(parentNode, query);

Я искал в Интернете, и я не могу найти никаких примеров, и я не уверен, каким будет синтаксис для выполнения вышеизложенного, и если это вообще возможно?

Спасибо заранее :)


person as96    schedule 14.08.2013    source источник
comment
есть ли у вас особая причина использовать XPathAPI? javax.xml.xpath.XPathExpression.evaluate() может делать то, что вы хотите по умолчанию   -  person azraelAT    schedule 14.08.2013


Ответы (1)


Предположительно, ваш класс XPathAPI — это Apache/Xalan org.apache.xpath.XPathAPI?

В таком случае, что не так с

static NodeIterator selectNodeIterator(Node contextNode, java.lang.String str) 

Кажется, он делает именно то, что вы хотите.

person Michael Kay    schedule 14.08.2013
comment
Да, это именно то, что я искал - СПАСИБО! - person as96; 14.08.2013