Класс XPathFactory
- java.lang.Object
-
- javax.xml.xpath.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() | Защищённый конструктор, так как следует использовать |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
abstract boolean | getFeature(String name) | Получение состояния указанного параметра. |
abstract boolean | isObjectModelSupported(String objectModel) | Поддерживает ли этот |
static XPathFactory | newDefaultInstance() | Создаёт новый экземпляр реализации |
static XPathFactory | newInstance() | Получение нового экземпляра |
static XPathFactory | newInstance(String uri) | Получение нового экземпляра |
static XPathFactory | newInstance(String uri,
String factoryClassName,
ClassLoader classLoader) | Получение нового экземпляра |
abstract XPath | newXPath() | Возвращает новый |
abstract void | setFeature(String name,
boolean value) | Устанавливает параметр для этого |
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 метод ищет в следующих местах в указанном порядке, где "загрузчик классов" относится к контекстному загрузчику классов:
-
Если присутствует системная переменная
DEFAULT_PROPERTY_NAME+ ":uri", где uri - параметр этого метода, то её значение считывается как имя класса. Метод попытается создать новый экземпляр этого класса, используя загрузчик классов, и вернёт его, если создание успешно. -
Использование файла конфигурации "jaxp.properties". Файл имеет стандартный формат
Propertiesи обычно расположен в каталоге conf установки Java. Он содержит полное квалифицированное имя класса реализации, где ключ — это системная переменная, определённая выше.Файл jaxp.properties читается реализацией JAXP только один раз, а его значения кешируются для дальнейшего использования. Если файла не существует при первой попытке чтения, дальнейшие попытки проверки его существования не производятся. Изменить значение любой переменной в файле jaxp.properties после его первого чтения невозможно.
-
Использование механизма загрузки поставщиков услуг, определённого классом
ServiceLoader, для попытки поиска и загрузки реализации службы с использованием механизма загрузки по умолчанию: механизм загрузки поставщиков услуг будет использовать контекстный загрузчик классов текущей нити для попытки загрузки службы. Если контекстный загрузчик классов равен null, будет использован системный загрузчик классов.
Каждый потенциальный поставщик услуг должен реализовать методisObjectModelSupported(String objectModel). Будет возвращён первый найденный поставщик услуг, поддерживающий указанную модель объектов.
В случаеServiceConfigurationErrorбудет выброшено исключениеXPathFactoryConfigurationException. -
Встроенная платформа
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- Определяет базовую модель объектов. Спецификация определяет только URIDEFAULT_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- Определяет базовую модель объектов. Спецификация определяет только URIDEFAULT_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