Spec-Zone .ru
спецификации, руководства, описания, API
 Платформа Java™
Стандарт Эд. 7

Пакет javax.xml.xpath

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

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

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

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

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


Краткий обзор XPath

Язык XPath обеспечивает простой, краткий синтаксис для того, чтобы он выбрал узлы из XML-документа. XPath также обеспечивает правила для того, чтобы они преобразовали узел в объектной модели XML-документов (ДОМ) дерево к булевской переменной, дважды, или строковое значение. XPath является определенным с помощью W3C языком и официальной рекомендацией W3C; W3C размещает Язык Пути XML (XPath) спецификация Версии 1.0.

XPath, запущенный в жизни в 1999 как дополнение к XSLT и языкам XPointer, но, позже стал популярным как автономный язык, поскольку единственное выражение XPath может использоваться, чтобы заменить много строк кода API ДОМА.

Выражения 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

Подстановочный оператор, *, заставляет все узлы элемента быть выбранными. Следующий пример выбирает все элементы дочерних элементов a <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 позволяет выбранным узлам быть объединенными в один из следующих других типов данных:

Требуемый тип возврата определяется a QName параметр в вызове метода, используемом, чтобы оценить выражение, которое является любой звонком XPathExpression.evalute(...) или к одному из XPath.evaluate(...) методы удобства. Позволенные значения QName определяются как константы в XPathConstants класс; они:

Когда a Boolean возвратитесь тип требуют, Boolean.TRUE возвращается, если один или более узлов были выбраны; иначе, Boolean.FALSE возвращается.

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

Number возвратите попытки типа объединить текст узла к a 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);
 Платформа Java™
Стандарт Эд. 7

Представьте ошибку или функцию
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.