Spec-Zone.ru › OpenJDK 8

Пакет javax.xml.xpath

Этот пакет предоставляет нейтральный по отношению к объектной модели API для оценки выражений XPath и доступа к среде выполнения.

См.: Описание

Интерфейс Описание
XPath

XPath предоставляет доступ к среде выполнения и выражениям XPath.

XPathExpression

XPathExpression предоставляет доступ к скомпилированным выражениям XPath.

XPathFunction

XPathFunction предоставляет доступ к функциям XPath.

XPathFunctionResolver

XPathFunctionResolver предоставляет доступ к набору пользовательских XPathFunction.

XPathVariableResolver

XPathVariableResolver предоставляет доступ к набору пользовательских переменных XPath.

Класс Описание
XPathConstants

Константы XPath.

XPathFactory

Экземпляр XPathFactory может быть использован для создания объектов XPath.

Исключение Описание
XPathException

XPathException представляет собой общее исключение XPath.

XPathExpressionException

XPathExpressionException представляет собой ошибку в выражении XPath.

XPathFactoryConfigurationException

XPathFactoryConfigurationException представляет собой ошибку конфигурации в среде XPathFactory.

XPathFunctionException

XPathFunctionException представляет собой ошибку с функцией XPath.

Описание пакета javax.xml.xpath

Этот пакет предоставляет нейтральный по отношению к объектной модели API для оценки выражений XPath и доступа к среде выполнения.

Следующие стандарты XML применяются:

  • Язык путей XML (XPath) Версия 1.0

Обзор XPath

Язык XPath предоставляет простой и лаконичный синтаксис для выбора узлов из документа XML. XPath также предоставляет правила для преобразования узла в дереве модели объекта документа XML (DOM) в булево, двойное или строковое значение. XPath — это определённый W3C язык и официальная рекомендация W3C; W3C предоставляет спецификацию языка путей XML (XPath) Версии 1.0.

XPath появился в 1999 году как дополнение к языкам XSLT и XPointer, но в последнее время стал популярен как отдельный язык, так как одно выражение XPath может заменить много строк кода API DOM.

Выражения XPath

Выражение XPath состоит из пути к расположению и одного или нескольких необязательных предикатов. Выражения также могут включать переменные XPath.

Следующее — пример простого выражения XPath:

/foo/bar

Этот пример выберет элемент <bar> в документе XML, таком как следующий:

<foo>
<bar/>
</foo>

Выражение /foo/bar является примером пути к расположению. Хотя пути к расположению XPath напоминают пути к файлам в Unix-подобных системах, важное различие заключается в том, что выражения XPath возвращают все узлы, соответствующие выражению. Таким образом, все три элемента <bar> в следующем документе будут выбраны выражением /foo/bar:

<foo>
<bar/>
<bar/>
<bar/>
</foo>

Оператор специального пути к расположению // выбирает узлы на любой глубине в документе XML. Следующий пример выбирает все элементы <bar> независимо от их расположения в документе:

//bar

Оператор подстановки * выбирает все узлы элементов. Следующий пример выбирает все дочерние элементы элемента <foo>:

/foo/*

Помимо узлов элементов, пути к расположению XPath также могут адресовывать атрибуты, текстовые узлы, узлы комментариев и узлы инструкций обработки. В следующей таблице приведены примеры путей к расположению для каждого из этих типов узлов:

Путь к расположению Описание
/foo/bar/@id Выбирает атрибут id элемента <bar>
/foo/bar/text() Выбирает текстовые узлы элемента <bar>. Различия между экранированными и неэкранированными данными символов не делается.
/foo/bar/comment() Выбирает все узлы комментариев, содержащиеся в элементе <bar>.
/foo/bar/processing-instruction() Выбирает все узлы инструкций обработки, содержащиеся в элементе <bar>.

Предикаты позволяют уточнить узлы, выбранные путем к расположению XPath. Предикаты имеют вид [expression]. Следующий пример выбирает все элементы <foo>, которые содержат атрибут include со значением true:

//foo[@include='true']

Предикаты могут быть добавлены друг к другу, чтобы дополнительно уточнить выражение, например:

//foo[@include='true'][@mode='bar']

Использование API XPath

Следующий пример демонстрирует использование API XPath для выбора одного или нескольких узлов из документа XML:

XPath xpath = XPathFactory.newInstance().newXPath();
String expression = "/widgets/widget";
InputSource inputSource = new InputSource("widgets.xml");
NodeList nodes = (NodeList) xpath.evaluate(expression, inputSource, XPathConstants.NODESET);

Выражения и типы XPath

Хотя выражения XPath выбирают узлы в документе XML, API XPath позволяет объединить выбранные узлы в один из следующих типов данных:

  • Boolean
  • Number
  • String

Желаемый тип возвращаемого значения задаётся параметром QName в вызове метода, используемого для оценки выражения, который либо вызов XPathExpression.evalute(...), либо один из методов-удобств XPath.evaluate(...). Разрешенные значения QName задаются как константы в классе XPathConstants; это:

  • XPathConstants.NODESET
  • XPathConstants.NODE
  • XPathConstants.STRING
  • XPathConstants.BOOLEAN
  • XPathConstants.NUMBER

Если запрашивается тип возвращаемого значения Boolean, возвращается Boolean.TRUE, если было выбрано один или несколько узлов; в противном случае возвращается Boolean.FALSE.

Тип возвращаемого значения String — это удобный способ извлечения символьных данных из текстового узла, атрибута, узла комментария или узла инструкции обработки. При использовании на узле элемента возвращается значение дочерних текстовых узлов.

Тип возвращаемого значения Number пытается объединить текст узла в тип данных double.

Контекст XPath

Пути к расположению XPath могут быть относительны к определённому узлу в документе, известному как context. Рассмотрим следующий документ XML:

<widgets>
<widget>
<manufacturer/>
<dimensions/>
</widget>
</widgets>

Элемент <widget> может быть выбран следующим кодом API XPath:

// parse the XML as a W3C Document
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document document = builder.parse(new File("/widgets.xml"));

XPath xpath = XPathFactory.newInstance().newXPath();
String expression = "/widgets/widget";
Node widgetNode = (Node) xpath.evaluate(expression, document, XPathConstants.NODE);

С ссылкой на элемент <widget> теперь можно записать относительное выражение XPath для выбора дочернего элемента <manufacturer>:

XPath xpath = XPathFactory.newInstance().newXPath();
String expression = "manufacturer";
Node manufacturerNode = (Node) xpath.evaluate(expression, widgetNode, XPathConstants.NODE);
  • Автор Бен Гэлбрайт
  • Автор Норман Уолш
  • Автор Джефф Суттор
  • См. Язык путей XML (XPath) Версия 1.0
  • С 1.5

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API