Класс Validator
- java.lang.Object
-
- javax.xml.validation.Validator
public abstract class Validator extends Object
Обработчик, проверяющий XML-документ по Schema.
Объект валидатора не потокобезопасен и не реентерабелен. Другими словами, приложение должно гарантировать, что один объект Validator не используется более чем одной нитью в любое время, а также, что метод validate не вызывается рекурсивно внутри вызова метода validate.
- Since:
- 1.5
Конструкторы
| Модификатор | Конструктор и описание |
|---|---|
protected |
Validator() Конструктор для производных классов. |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
abstract ErrorHandler |
getErrorHandler() Получает текущий набор |
boolean |
getFeature(String name) Получает значение флага функции. |
Object |
getProperty(String name) Получает значение свойства. |
abstract LSResourceResolver |
getResourceResolver() Получает текущий набор |
abstract void |
reset() Сбрасывает этот |
abstract void |
setErrorHandler(ErrorHandler errorHandler) Устанавливает обработчик |
void |
setFeature(String name,
boolean value) Устанавливает значение флага функции. |
void |
setProperty(String name,
Object object) Устанавливает значение свойства. |
abstract void |
setResourceResolver(LSResourceResolver resourceResolver) Устанавливает |
void |
validate(Source source) Проверяет указанный вход. |
abstract void |
validate(Source source,
Result result) Проверяет указанный вход и отправляет результат валидации с расширениями в указанный выход. |
Методы, унаследованные от класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Конструкторы
Validator
protected Validator()
Конструктор для производных классов.
Конструктор ничего не делает.
Производные классы должны создать объекты Validator, которые имеют null обработчик ошибок ErrorHandler и null решатель ресурсов LSResourceResolver.
Методы
reset
public abstract void reset()
Сбросить текущий Validator до исходной конфигурации.
Validator сбрасывается в то же состояние, что и при создании с помощью Schema.newValidator(). reset() разработан для повторного использования существующих Validator для экономии ресурсов, связанных с созданием новых Validator.
Сброшенный Validator не гарантирует, что решатель ресурсов LSResourceResolver или обработчик ошибок ErrorHandler Object будут одинаковыми, например, Object.equals(Object obj). Гарантируется, что LSResourceResolver и ErrorHandler функционально эквивалентны.
validate
public void validate(Source source)
throws SAXException,
IOException Проверяет указанный входной параметр.
Это просто удобный метод для validate(Source source, Result result) с result результата null.
- Параметры:
-
source- XML для проверки. Должен быть XML-документом или XML-элементом и не должен быть null. Для обратной совместимости результаты попытки проверки чего-либо, кроме документа или элемента, зависят от реализации. Реализации должны либо распознать и обработать входные данные, либо бросить исключение IllegalArgumentException. - Исключения:
-
IllegalArgumentException- ЕслиSourceявляется XML-объектом, который реализация не может проверить (например, инструкция обработки). -
SAXException- Если обработчик ошибокErrorHandlerбросает исключениеSAXExceptionили если обнаружена фатальная ошибка, и обработчик ошибокErrorHandlerвозвращается без ошибок. -
IOException- Если валидатор обрабатываетSAXSourceи базовыйXMLReaderбросает исключениеIOException. -
NullPointerException- Если параметрsourceимеет значениеnull. - См. также:
validate(Source source, Result result)
validate
public abstract void validate(Source source,
Result result)
throws SAXException,
IOException Проверяет указанные входные данные и отправляет результат проверки (с дополнениями) на указанный выход.
Этот метод накладывает следующие ограничения на типы принимаемых Source/Result.
Source / Result Принимаемые | ||||
|---|---|---|---|---|
StreamSource | SAXSource | DOMSource | StAXSource | |
null | OK | OK | OK | OK |
StreamResult | OK | IllegalArgumentException | IllegalArgumentException | IllegalArgumentException |
SAXResult | IllegalArgumentException | OK | IllegalArgumentException | IllegalArgumentException |
DOMResult | IllegalArgumentException | IllegalArgumentException | OK | IllegalArgumentException |
StAXResult | IllegalArgumentException | IllegalArgumentException | IllegalArgumentException | OK |
Для проверки одного Source в другой тип Result, используйте преобразователь тождества (см. TransformerFactory.newTransformer()).
Обнаруженные ошибки во время проверки отправляются в указанный обработчик ошибок ErrorHandler.
Если документ валиден или содержит ошибки, но ни одна из них не является фатальной и ErrorHandler не выбросила исключение, метод завершается нормально.
- Параметры:
-
source- XML для проверки. Должен быть XML-документом или XML-элементом и не должен быть null. Для обратной совместимости результаты попытки проверки чего-либо, кроме документа или элемента, зависят от реализации. Реализации должны либо распознать и обработать входные данные, либо бросить исключение IllegalArgumentException. -
result- ОбъектResult, который получает (возможно, дополненный) XML. Этот параметр может быть null, если вызывающая сторона не заинтересована в нём. Обратите внимание, что при использованииDOMResult, валидатор может просто передать тот же узел DOM изDOMSourceвDOMResult(в этом случаеsource.getNode()==result.getNode()), он может скопировать всё дерево DOM или изменить узел, переданный из источника. - Исключения:
-
IllegalArgumentException- Если типResultне соответствует типуSourceили еслиSourceявляется XML-объектом, который реализация не может проверить (например, инструкция обработки). -
SAXException- ЕслиErrorHandlerбросает исключениеSAXExceptionили если обнаружена фатальная ошибка, иErrorHandlerвозвращается без ошибок. -
IOException- Если валидатор обрабатываетSAXSourceи базовыйXMLReaderбросает исключениеIOException. -
NullPointerException- Если параметрsourceимеет значениеnull. - См. также:
validate(Source source)
setErrorHandler
public abstract void setErrorHandler(ErrorHandler errorHandler)
Устанавливает обработчик ошибок ErrorHandler для получения ошибок, обнаруженных во время вызова метода validate.
Обработчик ошибок может быть использован для настройки процесса обработки ошибок во время проверки. При установке обработчика ошибок ErrorHandler, обнаруженные ошибки во время проверки будут сначала отправлены в обработчик ErrorHandler.
Обработчик ошибок может прервать дальнейшую проверку немедленно, выбросив исключение SAXException из обработчика. Или, например, он может вывести ошибку на экран и попытаться продолжить проверку, возвратившись без ошибок из обработчика ErrorHandler.
Если из обработчика ошибок ErrorHandler выбрасывается исключение Throwable, вызывающая сторона метода validate получит то же самое исключение Throwable.
Валидатор Validator не должен бросать SAXException, не сообщив об этом обработчику ошибок ErrorHandler.
Когда обработчик ошибок ErrorHandler равен null, реализация ведет себя так, как если бы был установлен следующий обработчик ошибок ErrorHandler:
class DraconianErrorHandler implements ErrorHandler {
public void fatalError( SAXParseException e ) throws SAXException {
throw e;
}
public void error( SAXParseException e ) throws SAXException {
throw e;
}
public void warning( SAXParseException e ) throws SAXException {
// noop
}
} При создании нового объекта Validator это поле изначально равно null.
- Параметры:
-
errorHandler- Новый обработчик ошибок. Может быть null.
getErrorHandler
public abstract ErrorHandler getErrorHandler()
Возвращает текущего обработчика ошибок ErrorHandler, установленного для этого валидатора Validator.
- Возвращает:
- Метод возвращает объект, последний установленный через метод
setErrorHandler(ErrorHandler), или null, если этот метод не был вызван с момента создания этого валидатораValidator. - См. также:
setErrorHandler(ErrorHandler)
setResourceResolver
public abstract void setResourceResolver(LSResourceResolver resourceResolver)
Устанавливает решатель ресурсов LSResourceResolver для настройки разрешения ресурсов во время проверки.
Validator использует решатель ресурсов LSResourceResolver, когда ему нужно найти внешние ресурсы во время проверки, хотя то, что считается "поиском внешних ресурсов", зависит от каждого языка схем.
Если решатель ресурсов LSResourceResolver равен null, реализация будет вести себя так, как если бы был установлен следующий решатель ресурсов LSResourceResolver:
class DumbLSResourceResolver implements LSResourceResolver {
public LSInput resolveResource(
String publicId, String systemId, String baseURI) {
return null; // always return null
}
} Если решатель ресурсов LSResourceResolver бросает исключение RuntimeException (или его производные классы), то валидатор Validator прервёт обработку и вызывающая сторона метода validate получит то же исключение RuntimeException.
При создании нового объекта Validator это поле изначально равно null.
- Параметры:
-
resourceResolver- Новый решатель ресурсов для установки. Этот параметр может быть null.
getResourceResolver
public abstract LSResourceResolver getResourceResolver()
Получает текущего LSResourceResolver, установленного для этого Validator.
- Возвращает:
- Этот метод возвращает объект, который был последним установлен с помощью метода
setResourceResolver(LSResourceResolver), или null, если этот метод никогда не вызывался с момента создания этогоValidator. - См. также:
setErrorHandler(ErrorHandler)
getFeature
public boolean getFeature(String name)
throws SAXNotRecognizedException,
SAXNotSupportedException Получает значение флага функции.
Имя функции — любой полностью квалифицированный URI. Возможно, Validator распознает имя функции, но временно не сможет вернуть его значение. Некоторые значения функций могут быть доступны только в определенных контекстах, например, перед, во время или после проверки.
Реализаторы могут (и должны) придумывать свои функции, используя имена, основанные на своих собственных URI.
- Параметры:
-
name- Имя функции, которое представляет собой непустой полностью квалифицированный URI. - Возвращает:
- Текущее значение функции (true или false).
- Исключения:
-
SAXNotRecognizedException- Если значение функции не может быть назначено или получено. -
SAXNotSupportedException- КогдаValidatorраспознает имя функции, но не может определить его значение в данный момент. -
NullPointerException- Когда параметр name имеет значение null. - См. также:
setFeature(String, boolean)
setFeature
public void setFeature(String name,
boolean value)
throws SAXNotRecognizedException,
SAXNotSupportedException Устанавливает значение флага функции.
Функции могут использоваться для управления тем, как Validator анализирует схемы, хотя Validator не обязаны распознавать какие-либо конкретные имена функций.
Имя функции — любой полностью квалифицированный URI. Возможно, Validator предоставляет значение функции, но не может изменить текущее значение. Некоторые значения функций могут быть неизменяемыми или изменяемыми только в определенных контекстах, например, перед, во время или после проверки.
- Параметры:
-
name- Имя функции, которое представляет собой непустой полностью квалифицированный URI. -
value- Требуемое значение функции (true или false). - Исключения:
-
SAXNotRecognizedException- Если значение функции не может быть назначено или получено. -
SAXNotSupportedException- КогдаValidatorраспознает имя функции, но не может установить запрошенное значение. -
NullPointerException- Когда параметр name имеет значение null. - См. также:
getFeature(String)
setProperty
public void setProperty(String name,
Object object)
throws SAXNotRecognizedException,
SAXNotSupportedException Устанавливает значение свойства.
Имя свойства — любой полностью квалифицированный URI. Возможно, Validator распознает имя свойства, но не может изменить текущее значение. Некоторые значения свойств могут быть неизменяемыми или изменяемыми только в определенных контекстах, например, перед, во время или после проверки.
Все реализации, которые реализуют JAXP 1.5 или более позднюю версию, обязаны поддерживать свойства XMLConstants.ACCESS_EXTERNAL_DTD и XMLConstants.ACCESS_EXTERNAL_SCHEMA.
-
Доступ к внешним DTD в исходном или файле схемы ограничен протоколами, указанными в свойстве
XMLConstants.ACCESS_EXTERNAL_DTD. Если доступ запрещён во время проверки из-за ограничения этого свойства,SAXExceptionбудет выброшен методомvalidate(Source).Доступ к внешним ссылкам, установленным атрибутом schemaLocation, ограничен протоколами, указанными в свойстве
XMLConstants.ACCESS_EXTERNAL_SCHEMA. Если доступ запрещён во время проверки из-за ограничения этого свойства,SAXExceptionбудет выброшен методомvalidate(Source).
- Параметры:
-
name- Имя свойства, которое представляет собой непустой полностью квалифицированный URI. -
object- Запрашиваемое значение свойства. - Исключения:
-
SAXNotRecognizedException- Если значение свойства не может быть назначено или получено. -
SAXNotSupportedException- КогдаValidatorраспознаёт имя свойства, но не может установить запрошенное значение. -
NullPointerException- Когда параметр name имеет значение null.
getProperty
public Object getProperty(String name)
throws SAXNotRecognizedException,
SAXNotSupportedException Получает значение свойства.
Имя свойства — любой полностью квалифицированный URI. Возможно, Validator распознаёт имя свойства, но временно не может вернуть его значение. Некоторые значения свойств могут быть доступны только в определённых контекстах, например, перед, во время или после проверки.
Validator не обязаны распознавать какие-либо конкретные имена свойств.
Реализаторы могут (и должны) придумывать свои собственные свойства, используя имена, основанные на своих собственных URI.
- Параметры:
-
name- Имя свойства, которое представляет собой непустой полностью квалифицированный URI. - Возвращает:
- Текущее значение свойства.
- Исключения:
-
SAXNotRecognizedException- Если значение свойства не может быть назначено или получено. -
SAXNotSupportedException- Когда XMLReader распознаёт имя свойства, но не может определить его значение в данный момент. -
NullPointerException- Когда параметр name имеет значение null. - См. также:
setProperty(String, Object)
© 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.