Класс Validator
public abstract class Validator extends Object
Schema. Объект валидатора не является потокобезопасным и реентерабельным. Иными словами, приложение обязано следить за тем, чтобы один объект Validator не использовался одновременно более чем одним потоком, а также чтобы во время вызова метода validate приложения не вызывали рекурсивно метод validate.
- Начиная с:
- 1.5
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Конструктор для производных классов. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
abstract ErrorHandler |
getErrorHandler() |
Возвращает текущий ErrorHandler, установленный для этого Validator. |
boolean |
getFeature |
Возвращает значение флага функции. |
Object |
getProperty |
Возвращает значение свойства. |
abstract LSResourceResolver |
getResourceResolver() |
Возвращает текущий LSResourceResolver, установленный для этого Validator. |
abstract void |
reset() |
Сбрасывает этот Validator к исходной конфигурации. |
abstract void |
setErrorHandler |
Задает ErrorHandler, которому будут передаваться ошибки, возникающие во время вызова метода validate. |
void |
setFeature |
Задает значение флага функции. |
void |
setProperty |
Задает значение свойства. |
abstract void |
setResourceResolver |
Задает LSResourceResolver для настройки разрешения ресурсов во время проверки. |
void |
validate |
Проверяет указанные входные данные. |
abstract void |
validate |
Проверяет указанные входные данные и передает дополненный результат проверки указанным выходным данным. |
Подробное описание конструкторов
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
public abstract void validate(Source source, Result result) throws SAXException, IOException
Этот метод накладывает следующие ограничения на допустимые типы 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. - См. также:
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 implementsErrorHandler{ public void fatalError(SAXParseExceptione ) throwsSAXException{ throw e; } public void error(SAXParseExceptione ) throwsSAXException{ throw e; } public void warning(SAXParseExceptione ) throwsSAXException{ // noop } }
При создании нового объекта Validator это поле изначально имеет значение null.
- Параметры:
-
errorHandler— новый обработчик ошибок. Этот параметр может иметь значение null.
getErrorHandler
public abstract ErrorHandler getErrorHandler()
ErrorHandler, установленный для этого Validator.- Возвращает:
- Этот метод возвращает объект, последний раз заданный методом
setErrorHandler(ErrorHandler), или null, если этот метод ни разу не вызывался после создания данногоValidator. - См. также:
setResourceResolver
public abstract void setResourceResolver(LSResourceResolver resourceResolver)
LSResourceResolver для настройки разрешения ресурсов во время проверки. Validator использует LSResourceResolver, когда ему требуется найти внешние ресурсы во время проверки, хотя точное определение понятия «поиск внешних ресурсов» зависит от языка схемы.
Если значение LSResourceResolver равно null, реализация будет вести себя так, как если бы был задан следующий LSResourceResolver:
class DumbLSResourceResolver implementsLSResourceResolver{ publicLSInputresolveResource( 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. - См. также:
getFeature
public boolean getFeature(String name) throws SAXNotRecognizedException, SAXNotSupportedException
Имя функции — это URI с полным указанием. Объект Validator может распознавать имя функции, но временно не иметь возможности вернуть ее значение. Некоторые значения функций могут быть доступны только в определенных контекстах, например до, во время или после проверки.
Разработчики могут создавать собственные функции (и поощряются к этому), используя имена на основе собственных URI.
- Параметры:
-
name— имя функции, представляющее собой ненулевой URI с полным указанием. - Возвращает:
- Текущее значение функции (true или false).
- Исключения:
-
SAXNotRecognizedException— если значение функции невозможно назначить или получить. -
SAXNotSupportedException— еслиValidatorраспознает имя функции, но в данный момент не может определить ее значение. -
NullPointerException— если параметр name имеет значение null. - См. также:
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. - См. также:
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. Если во время проверки доступ запрещен из-за ограничения, заданного этим свойством, методvalidate(Source)выброситSAXException.Доступ к внешним ссылкам, заданным атрибутом schemaLocation, ограничивается протоколами, указанными в свойстве
XMLConstants.ACCESS_EXTERNAL_SCHEMA. Если во время проверки доступ запрещен из-за ограничения, заданного этим свойством, методvalidate(Source)выброситSAXException.
- Параметры:
-
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. - См. также:
© 1993, 2025, 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/25/docs/api/java.xml/javax/xml/validation/Validator.html