Класс XPathFactory
- java.lang.Object
-
- javax.xml.xpath.XPathFactory
public abstract class XPathFactory extends Object
Объект типа XPathFactory может быть использован для создания объектов XPath.
См. newInstance(String uri) для механизма поиска.
Класс XPathFactory не является потокобезопасным. Другими словами, ответственность приложения состоит в том, чтобы гарантировать, что в любой момент времени не более одного потока использует объект XPathFactory.
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 |
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.
- См. также:
- Значения постоянных полей
DEFAULT_OBJECT_MODEL_URI
public static final String DEFAULT_OBJECT_MODEL_URI
URI модели объекта по умолчанию.
- См. также:
- Значения постоянных полей
Конструкторы
XPathFactory
protected XPathFactory()
Защищённый конструктор, поскольку для создания нового экземпляра XPathFactory, следует использовать newInstance() или newInstance(String uri) или newInstance(String uri, String factoryClassName, ClassLoader classLoader).
Методы
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 — параметр этого метода, то её значение читается как имя класса. Метод попытается создать новый экземпляр этого класса, используя загрузчик классов, и вернёт его, если создание будет успешным. - Читается ${java.home}/lib/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 и XPaths, созданных этой фабрикой.
Имена свойств — полностью квалифицированные URIs. Реализации могут определять свои собственные свойства. Если это XPathFactory или созданные им XPaths не могут поддерживать свойство, то выбрасывается исключение XPathFactoryConfigurationException. Возможно, XPathFactory может экспонировать значение свойства, но не может изменить его состояние.
Все реализации обязаны поддерживать свойство XMLConstants.FEATURE_SECURE_PROCESSING. Когда свойство установлено в true, любая ссылка на внешнюю функцию является ошибкой. В этих условиях реализация не должна вызывать XPathFunctionResolver и должна выбросить исключение XPathFunctionException.
- Параметры:
-
name- Имя свойства. -
value- Является ли состояние свойстваtrueилиfalse. - Бросает:
-
XPathFactoryConfigurationException- если этоXPathFactoryили созданные имXPaths не могут поддерживать это свойство. -
NullPointerException- еслиnameявляетсяnull.
getFeature
public abstract boolean getFeature(String name)
throws XPathFactoryConfigurationException Получить состояние указанного свойства.
Имена свойств — полностью квалифицированные URIs. Реализации могут определять свои собственные свойства. Если это XPathFactory или созданные им XPaths не могут поддерживать свойство, то выбрасывается исключение XPathFactoryConfigurationException. Возможно, XPathFactory может экспонировать значение свойства, но не может изменить его состояние.
- Параметры:
-
name- Имя свойства. - Возвращает:
- Состояние указанного свойства.
- Бросает:
-
XPathFactoryConfigurationException- если этоXPathFactoryили созданные имXPaths не могут поддерживать это свойство. -
NullPointerException- еслиnameявляетсяnull.
setXPathVariableResolver
public abstract void setXPathVariableResolver(XPathVariableResolver resolver)
Установить обработчик переменных по умолчанию.
Любые объекты XPath созданные из этой фабрики, будут использовать указанный обработчик по умолчанию.
Исключение resolver будет выброшено, если 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.