Класс 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 с установленным обработчиком ошибок ErrorHandler и установленным 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.
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.
Если любое Throwable выбрасывается из ErrorHandler, вызывающий метод 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- Когда параметр имени имеет значение 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- Когда параметр имени имеет значение 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- Когда параметр имени имеет значение null.
getProperty
public Object getProperty(String name)
throws SAXNotRecognizedException,
SAXNotSupportedException Получение значения свойства.
Имя свойства — это любой полностью квалифицированный URI. Validator может распознать имя свойства, но временно не сможет вернуть его значение. Некоторые значения свойств могут быть доступны только в определённых контекстах, например, перед, во время или после валидации.
Validator не обязаны распознавать какие-либо определённые имена свойств.
Реализаторы могут (и должны) изобретать свои собственные свойства, используя имена, основанные на собственных URI.
- Параметры:
-
name- Имя свойства, которое является непустым полностью квалифицированным URI. - Возвращает:
- Текущее значение свойства.
- Исключения:
-
SAXNotRecognizedException- Если значение свойства нельзя присвоить или получить. -
SAXNotSupportedException- Когда XMLReader распознаёт имя свойства, но не может определить его значение в данный момент. -
NullPointerException- Когда параметр имени имеет значение 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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.xml/javax/xml/validation/Validator.html