XPath / XQuery: как получить весь массив вместо первого элемента при использовании

1

Я хочу извлечь некоторую информацию из XML-документа, например:

<howto>
  <element>One</element>
  <element>Two</element>
  <element>Three</element>
<howto>

И я хочу, используя xpah или xquery, извлечь за один шаг три элемента, а не только кулак, который я получаю при запросе с использованием xpath("//element")

Есть ли способ сделать это на Java, желательно используя xpath или xquery внутри маршрута Camel?

  • 1
    Пожалуйста, попробуйте то же самое в XQuery - и вы увидите, что там работает //element .
Теги:
xpath
xquery
apache-camel

1 ответ

1

Пытаться:

XPathFactory xPathfactory = XPathFactory.newInstance();
XPath xpath = xPathfactory.newXPath();
XPathExpression expr = xpath.compile("//element");
NodeList list= (NodeList) expr.evaluate(yourDoc, XPathConstants.NODESET);
  • 0
    Это должно работать, но я хочу иметь ArrayList или String [] за один шаг, чтобы я мог избежать итерации NodeList
  • 1
    @ victor.hernandez в XPath 1.0 единственный многозначный тип возврата - NODESET. Если вы установите тип возвращаемого значения STRING, тогда вы получите только значение первого элемента - это правило в XPath 1.0, для преобразования набора узлов в строку вы берете значение его первого узла в порядке документа. Если вы хотите вернуть последовательность строк, вам нужно переключиться на реализацию XPath 2.0, такую как S9api.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню