Интерфейс XPathEvaluator
public interface XPathEvaluator
Оценивание выражений XPath предоставляется XPathEvaluator. В реализации DOM, поддерживающей функцию XPath 3.0, как описано выше, интерфейс XPathEvaluator будет реализован на том же объекте, который реализует интерфейс Document, что позволит получить его с помощью обычного метода, специфичного для привязки, такого как приведение типа или с помощью метода getInterface DOM уровня 3. В этом случае реализация, полученная из документа, поддерживает модуль XPath DOM и совместима со спецификацией XPath 1.0.
Вычисление выражений со специализированными функциями расширения или переменными может не работать во всех реализациях и поэтому не является переносимым. Реализации XPathEvaluator могут быть доступны из других источников, которые могут предоставить специальную поддержку специализированных функций расширения или переменных, как определено другими спецификациями.
См. также Спецификацию XPath уровня 3 Document Object Model (DOM).
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
XPathExpression |
createExpression(String expression,
XPathNSResolver resolver) |
Создаёт разобранное выражение XPath с разрешёнными именами пространств имён. |
XPathNSResolver |
createNSResolver(Node nodeResolver) |
Адаптирует любой узел DOM для разрешения имён пространств, чтобы выражение XPath можно было легко оценить относительно контекста узла, где оно появилось в документе. |
Object |
evaluate(String expression,
Node contextNode,
XPathNSResolver resolver,
short type,
Object result) |
Оценивает строку выражения XPath и возвращает результат указанного типа, если это возможно. |
Методы
createExpression
XPathExpression createExpression(String expression,
XPathNSResolver resolver)
throws XPathException,
DOMException
Создаёт разобранное выражение XPath с разрешёнными именами пространств имён. Это полезно, когда выражение будет повторно использоваться в приложении, поскольку это позволяет скомпилировать строку выражения в более эффективный внутренний вид и предварительно разрешить все префиксы имён пространств, которые встречаются в выражении.
- Параметры:
-
expression- Строка выражения XPath, подлежащая разбору. -
resolver-resolverпозволяет преобразовать префиксы в выражении XPath в соответствующие URI пространств имён. Если это задано какnull, любой префикс имени пространства в выражении приведёт к исключениюDOMExceptionс кодомNAMESPACE_ERR. - Возвращает:
- Скомпилированную форму выражения XPath.
- Исключения:
-
XPathException- INVALID_EXPRESSION_ERR: Выбрасывается, если выражение не является допустимым в соответствии с правиламиXPathEvaluator. -
DOMException- NAMESPACE_ERR: Выбрасывается, если выражение содержит префиксы имён пространств, которые не могут быть разрешены указаннымXPathNSResolver.
createNSResolver
XPathNSResolver createNSResolver(Node nodeResolver)
Адаптирует любой узел DOM для разрешения имён пространств, чтобы выражение XPath можно было легко оценить относительно контекста узла, где оно появилось в документе. Этот адаптер работает так же, как метод DOM уровня 3 lookupNamespaceURI для узлов, разрешая namespaceURI по заданному префиксу, используя текущую информацию, доступную в иерархии узла на момент вызова lookupNamespaceURI. Также правильно разрешает неявный префикс xml.
- Параметры:
-
nodeResolver- Узел, используемый в качестве контекста для разрешения имён пространств. - Возвращает:
-
XPathNSResolver, который разрешает имена пространств относительно определений, действующих для указанного узла.
evaluate
Object evaluate(String expression,
Node contextNode,
XPathNSResolver resolver,
short type,
Object result)
throws XPathException,
DOMException
Оценивает строку выражения XPath и возвращает результат указанного типа, если это возможно.
- Параметры:
-
expression- Строка выражения XPath, подлежащая разбору и оценке. -
contextNode-context- это контекстный узел для вычисления этого выражения XPath. Если XPathEvaluator был получен путём приведения типаDocument, то он должен принадлежать тому же документу и должен быть узломDocument,Element,Attribute,Text,CDATASection,Comment,ProcessingInstruction, илиXPathNamespace. Если контекстный узел является узломTextилиCDATASection, то контекст интерпретируется как весь логический текстовый узел, как отображается XPath, если только узел не пустой, в этом случае он не может служить контекстом XPath. -
resolver-resolverпозволяет преобразовать префиксы в выражении XPath в соответствующие URI пространств имён. Если это задано какnull, любой префикс имени пространства в выражении приведёт к исключениюDOMExceptionс кодомNAMESPACE_ERR. -
type- Если задан конкретныйtype, то результат будет возвращён как соответствующий тип. Для результатов XPath 1.0 этот параметр должен быть одним из кодов интерфейсаXPathResult. -
result-resultуказывает на конкретный объект результата, который может быть повторно использован и возвращён этим методом. Если это задано какnullили реализация не повторно использует указанный результат, то будет создан и возвращён новый объект результата. Для результатов XPath 1.0 этот объект будет типаXPathResult. - Возвращает:
- Результат вычисления выражения XPath. Для результатов XPath 1.0 этот объект будет типа
XPathResult. - Исключения:
-
XPathException- INVALID_EXPRESSION_ERR: Выбрасывается, если выражение не является допустимым в соответствии с правиламиXPathEvaluatori
TYPE_ERR: Выбрасывается, если результат не может быть преобразован в указанный тип. -
DOMException- NAMESPACE_ERR: Выбрасывается, если выражение содержит префиксы имён пространств, которые не могут быть разрешены указаннымXPathNSResolver.
WRONG_DOCUMENT_ERR: Узел принадлежит документу, который не поддерживается этимXPathEvaluator.
NOT_SUPPORTED_ERR: Узел не является типом, разрешённым в качестве узла контекста XPath, или тип запроса не разрешён этимXPathEvaluator.
© 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.
https://docs.oracle.com/en/java/javase/11/docs/api/jdk.xml.dom/org/w3c/dom/xpath/XPathEvaluator.html