Класс XPathFactory

public abstract class XPathFactory
extends Object

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

См. newInstance(String uri) для механизма поиска.

Класс XPathFactory не потокобезопасен. Другими словами, приложение должно гарантировать, что в любой момент времени не более одного потока использует объект XPathFactory. Реализации рекомендуется помечать методы как synchronized для защиты от проблемных клиентов.

XPathFactory не реентерабелен. Пока один из методов newInstance вызывается, приложения не должны пытаться рекурсивно вызывать метод newInstance, даже из того же потока.

Since:
1.5

Поля

Модификатор и тип Поле Описание
static String DEFAULT_OBJECT_MODEL_URI

URI модели объекта по умолчанию.

static String DEFAULT_PROPERTY_NAME

Имя свойства по умолчанию в соответствии со спецификацией JAXP.

Конструкторы

Модификатор Конструктор Описание
protected XPathFactory()

Защищённый конструктор, так как следует использовать newInstance() или newInstance(String uri) или newInstance(String uri, String factoryClassName, ClassLoader classLoader) для создания нового экземпляра XPathFactory.

Методы

Модификатор и тип Метод Описание
abstract boolean getFeature​(String name)

Получение состояния указанного параметра.

abstract boolean isObjectModelSupported​(String objectModel)

Поддерживает ли этот XPathFactory указанную модель объекта?

static XPathFactory newDefaultInstance()

Создаёт новый экземпляр реализации XPathFactory по умолчанию встроенной системы.

static XPathFactory newInstance()

Получение нового экземпляра XPathFactory с использованием модели объекта по умолчанию, DEFAULT_OBJECT_MODEL_URI, W3C DOM.

static XPathFactory newInstance​(String uri)

Получение нового экземпляра XPathFactory с использованием указанной модели объекта.

static XPathFactory newInstance​(String uri, String factoryClassName, ClassLoader classLoader)

Получение нового экземпляра XPathFactory из имени класса фабрики.

abstract XPath newXPath()

Возвращает новый XPath, используя базовую модель объекта, определённую при создании XPathFactory.

abstract void setFeature​(String name, boolean value)

Устанавливает параметр для этого XPathFactory и XPaths, созданных этой фабрикой.

abstract void setXPathFunctionResolver​(XPathFunctionResolver resolver)

Устанавливает решатель функций по умолчанию.

abstract void setXPathVariableResolver​(XPathVariableResolver resolver)

Устанавливает решатель переменных по умолчанию.

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Поля

DEFAULT_PROPERTY_NAME

public static final String DEFAULT_PROPERTY_NAME

Имя свойства по умолчанию в соответствии со спецификацией JAXP.

See Also:
Постоянные значения полей

DEFAULT_OBJECT_MODEL_URI

public static final String DEFAULT_OBJECT_MODEL_URI

URI модели объекта по умолчанию.

See Also:
Постоянные значения полей

Конструкторы

XPathFactory

protected XPathFactory()

Защищённый конструктор, так как следует использовать newInstance() или newInstance(String uri) или newInstance(String uri, String factoryClassName, ClassLoader classLoader) для создания нового экземпляра XPathFactory.

Методы

newDefaultInstance

public static XPathFactory newDefaultInstance()

Создаёт новый экземпляр встроенной реализации XPathFactory по умолчанию.

Требования к реализации:
Встроенная реализация XPathFactory по умолчанию должна поддерживать default object model и W3C DOM, но может поддерживать и дополнительные модели объектов.
Возвращает:
Новый экземпляр встроенной реализации XPathFactory по умолчанию.
С:
9

newInstance

public static XPathFactory newInstance()

Получение нового экземпляра XPathFactory с использованием модели объектов по умолчанию, DEFAULT_OBJECT_MODEL_URI и W3C DOM.

Этот метод функционально эквивалентен:

newInstance(DEFAULT_OBJECT_MODEL_URI)

Поскольку реализация W3C DOM всегда доступна, этот метод никогда не завершится с ошибкой.

Возвращает:
Экземпляр XPathFactory.
Исключения:
RuntimeException - При возникновении ошибки при создании экземпляра XPathFactory для модели объектов по умолчанию.

newInstance

public static XPathFactory newInstance(String uri)
                                throws XPathFactoryConfigurationException

Получение нового экземпляра XPathFactory с использованием указанной модели объектов.

Для поиска объекта XPathFactory метод ищет в следующих местах в указанном порядке, где "загрузчик классов" относится к контекстному загрузчику классов:

  1. Если присутствует системная переменная DEFAULT_PROPERTY_NAME + ":uri", где uri - параметр этого метода, то её значение считывается как имя класса. Метод попытается создать новый экземпляр этого класса, используя загрузчик классов, и вернёт его, если создание успешно.

  2. Использование файла конфигурации "jaxp.properties". Файл имеет стандартный формат Properties и обычно расположен в каталоге conf установки Java. Он содержит полное квалифицированное имя класса реализации, где ключ — это системная переменная, определённая выше.

    Файл jaxp.properties читается реализацией JAXP только один раз, а его значения кешируются для дальнейшего использования. Если файла не существует при первой попытке чтения, дальнейшие попытки проверки его существования не производятся. Изменить значение любой переменной в файле jaxp.properties после его первого чтения невозможно.

  3. Использование механизма загрузки поставщиков услуг, определённого классом ServiceLoader, для попытки поиска и загрузки реализации службы с использованием механизма загрузки по умолчанию: механизм загрузки поставщиков услуг будет использовать контекстный загрузчик классов текущей нити для попытки загрузки службы. Если контекстный загрузчик классов равен null, будет использован системный загрузчик классов.
    Каждый потенциальный поставщик услуг должен реализовать метод isObjectModelSupported(String objectModel). Будет возвращён первый найденный поставщик услуг, поддерживающий указанную модель объектов.
    В случае ServiceConfigurationError будет выброшено исключение XPathFactoryConfigurationException.

  4. Встроенная платформа XPathFactory расположена специфичным для платформы образом. Должна быть платформенная реализация XPathFactory для W3C DOM, т.е. DEFAULT_OBJECT_MODEL_URI.

Если всё провалится, будет выброшено исключение XPathFactoryConfigurationException.

Совет по устранению неполадок:

См. Properties.load(java.io.InputStream) для точного определения того, как анализируется файл свойств. В частности, двоеточия ':' должны быть экранированы в файле свойств, поэтому убедитесь, что URI в нём правильно экранированы. Например:

http\://java.sun.com/jaxp/xpath/dom=org.acme.DomXPathFactory
Параметры:
uri - Определяет базовую модель объектов. Спецификация определяет только URI DEFAULT_OBJECT_MODEL_URI, http://java.sun.com/jaxp/xpath/dom для W3C DOM, пакет org.w3c.dom, а реализации могут вводить другие URI для других моделей объектов.
Возвращает:
Экземпляр XPathFactory.
Исключения:
XPathFactoryConfigurationException - Если указанная модель объектов недоступна или если возникла ошибка конфигурации.
NullPointerException - Если uri является null.
IllegalArgumentException - Если uri является null или uri.length() == 0.

newInstance

public static XPathFactory newInstance(String uri,
                                       String factoryClassName,
                                       ClassLoader classLoader)
                                throws XPathFactoryConfigurationException

Получение нового экземпляра XPathFactory из имени класса фабрики. XPathFactory возвращается, если указанный класс фабрики поддерживает указанную модель объектов. Эта функция полезна, когда в пути класса есть несколько поставщиков. Она даёт больше контроля приложению, так как оно может указать, какой поставщик следует загрузить.

Совет по устранению неполадок

Установив системную переменную jaxp.debug, этот метод будет выводить много отладочных сообщений в System.err о своих действиях и том, где он ищет.

Если у вас возникли проблемы, попробуйте:

java -Djaxp.debug=1 YourProgram ....
Параметры:
uri - Определяет базовую модель объектов. Спецификация определяет только URI DEFAULT_OBJECT_MODEL_URI,http://java.sun.com/jaxp/xpath/dom для W3C DOM, пакет org.w3c.dom, а реализации могут вводить другие URI для других моделей объектов.
factoryClassName - Полное квалифицированное имя класса фабрики, предоставляющего реализацию javax.xml.xpath.XPathFactory.
classLoader - ClassLoader используется для загрузки класса фабрики. Если null используется контекстный загрузчик классов текущего Thread.
Возвращает:
Новый экземпляр XPathFactory
Исключения:
XPathFactoryConfigurationException - если factoryClassName является null, или класс фабрики не может быть загружен, создан, или класс фабрики не поддерживает модель объектов, указанную в параметре uri.
NullPointerException - Если uri является null.
IllegalArgumentException - Если uri является null или uri.length() == 0.
С:
1.6
См. также:
newInstance(), newInstance(String uri)

isObjectModelSupported

public abstract boolean isObjectModelSupported(String objectModel)

Поддерживает ли этот XPathFactory указанную модель объектов?

Параметры:
objectModel - Указывает модель объектов, которую возвращаемый XPathFactory будет понимать.
Возвращает:
true если XPathFactory поддерживает objectModel, иначе false.
Исключения:
NullPointerException - Если objectModel является null.
IllegalArgumentException - Если objectModel.length() == 0.

setFeature

public abstract void setFeature(String name,
                                boolean value)
                         throws XPathFactoryConfigurationException

Устанавливает функцию для этого XPathFactory и созданных им XPath.

Имена функций являются полными квалифицированными URI. Реализации могут определять свои собственные функции. Если этот XPathFactory или созданные им XPath не могут поддерживать функцию, выбрасывается исключение XPathFactoryConfigurationException. Возможно, что XPathFactory может выводить значение функции, но не сможет изменить его состояние.

Все реализации должны поддерживать функцию XMLConstants.FEATURE_SECURE_PROCESSING. Когда функция имеет значение true, любой вызов внешней функции является ошибкой. В этих условиях реализация не должна вызывать XPathFunctionResolver и должна выбрасывать исключение XPathFunctionException.

Параметры:
name - Имя функции.
value - Состояние функции true или false.
Исключения:
XPathFactoryConfigurationException - если этот XPathFactory или созданные им XPath не могут поддерживать эту функцию.
NullPointerException - если name является null.

getFeature

public abstract boolean getFeature(String name)
                            throws XPathFactoryConfigurationException

Получение состояния указанной функции.

Имена функций являются полными квалифицированными URI. Реализации могут определять свои собственные функции. Если этот XPathFactory или созданные им XPath не могут поддерживать функцию, выбрасывается исключение XPathFactoryConfigurationException. Возможно, что XPathFactory может выводить значение функции, но не сможет изменить его состояние.

Параметры:
name - Имя функции.
Возвращает:
Состояние указанной функции.
Исключения:
XPathFactoryConfigurationException - если этот XPathFactory или созданные им XPath не могут поддерживать эту функцию.
NullPointerException - если name является null.

setXPathVariableResolver

public abstract void setXPathVariableResolver(XPathVariableResolver resolver)

Установление обработчика переменных по умолчанию.

Любые объекты XPath, созданные этой фабрикой, будут использовать указанный обработчик по умолчанию.

Выбрасывается исключение NullPointerException если resolver является null.

Параметры:
resolver - Обработчик переменных.
Исключения:
NullPointerException - Если resolver является null.

setXPathFunctionResolver

public abstract void setXPathFunctionResolver(XPathFunctionResolver resolver)

Установить функцию разрешения по умолчанию.

Любые объекты XPath , созданные из этой фабрики, будут использовать указанное разрешение по умолчанию.

Исключение NullPointerException выбрасывается, если resolver является null.

Параметры:
resolver - Разрешитель функций XPath.
Исключения:
NullPointerException - Если resolver является null.

newXPath

public abstract XPath newXPath()

Возвращает новый объект XPath , используя внутреннюю модель объекта, определенную при создании XPathFactory.

Возвращает:
Новый экземпляр XPath.

© 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/java.xml/javax/xml/xpath/XPathFactory.html

Spec-Zone .ru
спецификации, руководства, описания, API