Класс ValidatorHandler
- java.lang.Object
-
- javax.xml.validation.ValidatorHandler
- Все реализуемые интерфейсы:
ContentHandler
public abstract class ValidatorHandler extends Object implements ContentHandler
Потоковый валидатор, работающий с потоком SAX.
Объект ValidatorHandler не потокобезопасен и не реентерабелен. Другими словами, приложение должно гарантировать, что один объект ValidatorHandler не используется из более чем одной нити в любой момент времени.
ValidatorHandler проверяет, соответствуют ли события SAX набору ограничений, описанных в ассоциированном Schema, и дополнительно может изменять события SAX (например, добавлять значения по умолчанию и т. д.).
ValidatorHandler расширяет ContentHandler, но уточняет базовый ContentHandler следующим образом:
- События startElement/endElement должны получать не null строки для
uri,localName, иqname, даже если SAX разрешает некоторые из них быть null. Аналогично, пользовательскийContentHandlerполучит не null строки для всех трех параметров. - Приложения должны гарантировать, что
ValidatorHandler'sContentHandler.startPrefixMapping(String,String)иContentHandler.endPrefixMapping(String)вызываются должным образом. Аналогично, указанный пользователемContentHandlerполучит события startPrefixMapping/endPrefixMapping. ЕслиValidatorHandlerвводит дополнительные привязки имен пространства имён, пользовательскийContentHandlerполучит дополнительные события startPrefixMapping/endPrefixMapping. -
Attributesдля методаContentHandler.startElement(String,String,String,Attributes)может или не может включать атрибуты xmlns*.
Объект ValidatorHandler автоматически сбрасывается каждый раз при вызове метода startDocument.
Распознаваемые свойства и функции
Этот стандарт определяет следующие функции, которые должны распознаваться всеми реализациями ValidatorHandler.
http://xml.org/sax/features/namespace-prefixes
Эта функция управляет тем, как ValidatorHandler вводит привязки имен пространства имён, которые не были присутствуют в исходном потоке событий SAX. При установке этой функции в значение true, она должна убедиться, что пользовательский ContentHandler увидит соответствующий атрибут xmlns* в объекте Attributes метода обратного вызова ContentHandler.startElement(String,String,String,Attributes). В противном случае атрибуты xmlns* не должны добавляться к Attributes, передаваемому в указанный пользователем ContentHandler.
(Обратите внимание, что независимо от этого переключателя, привязки имен пространства имён всегда сообщаются приложениям через методы ContentHandler.startPrefixMapping(String,String) и ContentHandler.endPrefixMapping(String) указанного пользователем ContentHandler.)
Обратите внимание, что эта функция не влияет на способ получения ValidatorHandler событий SAX. Она лишь изменяет способ дополнения событий SAX.
Эта функция установлена в значение false по умолчанию.
- С момента:
- 1.5
Конструкторы
| Модификатор | Конструктор | Описание |
|---|---|---|
protected | ValidatorHandler() | Конструктор для производных классов. |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
abstract ContentHandler | getContentHandler() | Получение |
abstract ErrorHandler | getErrorHandler() | Получение текущего |
boolean | getFeature(String name) | Поиск значения флага функции. |
Object | getProperty(String name) | Поиск значения свойства. |
abstract LSResourceResolver | getResourceResolver() | Получение текущего |
abstract TypeInfoProvider | getTypeInfoProvider() | Получение реализации |
abstract void | setContentHandler(ContentHandler receiver) | Установка |
abstract void | setErrorHandler(ErrorHandler errorHandler) | Установка |
void | setFeature(String name,
boolean value) | Установка функции для данного |
void | setProperty(String name,
Object object) | Установка значения свойства. |
abstract void | setResourceResolver(LSResourceResolver resourceResolver) | Установка |
Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Методы, объявленные в интерфейсе org.xml.sax.ContentHandler
characters, endDocument, endElement, endPrefixMapping, ignorableWhitespace, processingInstruction, setDocumentLocator, skippedEntity, startDocument, startElement, startPrefixMapping Конструкторы
ValidatorHandler
protected ValidatorHandler()
Конструктор для производных классов.
Конструктор ничего не делает.
Производные классы должны создавать объекты ValidatorHandler, которые имеют null ErrorHandler и null LSResourceResolver.
Методы
setContentHandler
public abstract void setContentHandler(ContentHandler receiver)
Устанавливает ContentHandler, который получает результат расширенной валидации.
Когда указан ContentHandler, ValidatorHandler будет работать как фильтр и в основном копировать входящие события в указанный ContentHandler.
При этом ValidatorHandler может изменять события, например, добавляя значения по умолчанию для атрибутов.
ValidatorHandler может буферизовать события до определённой степени, но для того, чтобы ValidatorHandler мог быть использован парсером, необходимо выполнить следующие условия.
- Когда
ContentHandler.startElement(String, String, String, Attributes),ContentHandler.endElement(String, String, String),ContentHandler.startDocument()илиContentHandler.endDocument()вызываются наValidatorHandler, то же самое метод на пользовательскомContentHandlerдолжен быть вызван для того же события до возврата из обратного вызова. -
ValidatorHandlerне может вводить новые элементы, отсутствующие во входных данных. -
ValidatorHandlerне может удалять атрибуты, присутствующие во входных данных.
Когда метод обратного вызова, указанный ContentHandler, выбрасывает исключение, то же самое исключение должно быть выброшено из ValidatorHandler. Обработчик ошибок ErrorHandler не должен уведомляться об таком исключении.
Этот метод может быть вызван даже во время валидации.
- Параметры:
-
receiver- AContentHandleror a null value.
getContentHandler
public abstract ContentHandler getContentHandler()
Возвращает ContentHandler, который получает результат расширенной валидации.
- Возвращает:
- Этот метод возвращает объект, который был последний установлен через метод
getContentHandler(), или null, если этот метод никогда не вызывался с момента создания этого объектаValidatorHandler. - См. также:
setContentHandler(ContentHandler)
setErrorHandler
public abstract void setErrorHandler(ErrorHandler errorHandler)
Устанавливает ErrorHandler для получения ошибок, возникших во время валидации.
Обработчик ошибок может быть использован для настройки процесса обработки ошибок во время валидации. Когда установлен ErrorHandler, ошибки, обнаруженные во время валидации, будут отправлены в ErrorHandler.
Обработчик ошибок может прервать дальнейшую валидацию немедленно, выбросив SAXException из обработчика. Или, например, он может вывести ошибку на экран и попытаться продолжить валидацию, вернувшись нормально из ErrorHandler.
Если любое исключение Throwable выбрасывается из ErrorHandler, то же самое исключение Throwable будет выброшено в корень стека вызовов.
ValidatorHandler не разрешается выбрасывать 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
}
} При создании нового объекта ValidatorHandler, это поле изначально равно null.
- Параметры:
-
errorHandler- Новый обработчик ошибок для установки. Этот параметр может быть null.
getErrorHandler
public abstract ErrorHandler getErrorHandler()
Возвращает текущего ErrorHandler, установленного для данного ValidatorHandler.
- Возвращает:
- Этот метод возвращает объект, который был последний установлен через метод
setErrorHandler(ErrorHandler), или null, если этот метод никогда не вызывался с момента создания этого объектаValidatorHandler. - См. также:
setErrorHandler(ErrorHandler)
setResourceResolver
public abstract void setResourceResolver(LSResourceResolver resourceResolver)
Устанавливает LSResourceResolver для настройки разрешения ресурсов во время валидации.
ValidatorHandler использует LSResourceResolver при необходимости определения внешних ресурсов во время валидации, хотя то, что конкретно считается "определением внешних ресурсов", зависит от языка схемы.
Если LSResourceResolver равен null, то реализация будет вести себя так, как если бы был установлен следующий LSResourceResolver:
class DumbLSResourceResolver implements LSResourceResolver {
public LSInput resolveResource(
String publicId, String systemId, String baseURI) {
return null; // always return null
}
} Если LSResourceResolver выбрасывает RuntimeException (или экземпляры его производных классов), то ValidatorHandler прервет разбор, и вызывающий метод validate получит то же самое RuntimeException.
При создании нового объекта ValidatorHandler, это поле изначально равно null.
- Параметры:
-
resourceResolver- Новый разрешитель ресурсов для установки. Этот параметр может быть null.
getResourceResolver
public abstract LSResourceResolver getResourceResolver()
Возвращает текущего LSResourceResolver, установленного для данного ValidatorHandler.
- Возвращает:
- Этот метод возвращает объект, который был последний установлен через метод
setResourceResolver(LSResourceResolver), или null, если этот метод никогда не вызывался с момента создания этого объектаValidatorHandler. - См. также:
setErrorHandler(ErrorHandler)
getTypeInfoProvider
public abstract TypeInfoProvider getTypeInfoProvider()
Получает реализацию TypeInfoProvider для данного ValidatorHandler.
Полученная реализация TypeInfoProvider может быть запрошена во время разбора для доступа к информации о типе, определенной валидатором.
Некоторые языки схем не определяют понятие типа; для таких языков этот метод может быть не поддерживается. Однако для соответствия данной спецификации реализации для W3C XML Schema 1.0 должны поддерживать эту операцию.
- Возвращает:
- null, если валидатор/язык схемы не поддерживает понятие
TypeInfo. В противном случае возвращает непустой допустимый объектTypeInfoProvider.
getFeature
public boolean getFeature(String name)
throws SAXNotRecognizedException,
SAXNotSupportedException Получение значения флага функции.
Имя функции — это любой полностью квалифицированный URI. ValidatorHandler может распознать имя функции, но временно не сможет вернуть его значение. Некоторые значения функций могут быть доступны только в определенных контекстах, таких как до, во время или после валидации.
Реализаторы свободны (и им рекомендуется) изобретать свои собственные функции, используя имена, основанные на своих собственных URI.
- Параметры:
-
name- Имя функции, которое является непустым полностью квалифицированным URI. - Возвращает:
- Текущее значение функции (true или false).
- Исключения:
-
SAXNotRecognizedException- Если значению функции нельзя присвоить или извлечь. -
SAXNotSupportedException- КогдаValidatorHandlerраспознает имя функции, но не может определить её значение в данный момент. -
NullPointerException- Когдаnameявляетсяnull. - См. также:
setFeature(String, boolean)
setFeature
public void setFeature(String name,
boolean value)
throws SAXNotRecognizedException,
SAXNotSupportedException Установите параметр для этого ValidatorHandler.
Параметр может использоваться для управления способом, которым ValidatorHandler парсит схемы. Имя параметра — любой полностью квалифицированный URI. Возможна ситуация, когда SchemaFactory может экспонировать значение параметра, но не может изменить текущее значение. Некоторые значения параметров могут быть неизменяемыми или изменяемыми только в определенных контекстах, таких как перед, во время или после валидации.
Все реализации обязаны поддерживать параметр XMLConstants.FEATURE_SECURE_PROCESSING. Когда параметр:
-
true: реализация ограничит обработку XML, чтобы соответствовать ограничениям реализации. Примеры включают ограничения расширения сущностей и конструкции XML Schema, которые бы потребовали больших ресурсов. Если обработка XML ограничена по соображениям безопасности, это будет сообщено через вызов зарегистрированногоErrorHandler.fatalError(SAXParseException exception). См.setErrorHandler(ErrorHandler errorHandler). -
false: реализация будет обрабатывать XML в соответствии со спецификациями XML без учета возможных ограничений реализации.
- Параметры:
-
name- Имя параметра, которое является непустым полностью квалифицированным URI. -
value- Запрашиваемое значение параметра (true или false). - Исключения:
-
SAXNotRecognizedException- Если значение параметра нельзя назначить или получить. -
SAXNotSupportedException- КогдаValidatorHandlerраспознает имя параметра, но не может установить запрашиваемое значение. -
NullPointerException- Когдаnameравноnull. - См. также:
getFeature(String)
setProperty
public void setProperty(String name,
Object object)
throws SAXNotRecognizedException,
SAXNotSupportedException Установить значение свойства.
Имя свойства — любой полностью квалифицированный URI. Возможна ситуация, когда ValidatorHandler распознает имя свойства, но не может изменить текущее значение. Некоторые значения свойств могут быть неизменяемыми или изменяемыми только в определенных контекстах, таких как перед, во время или после валидации.
ValidatorHandler не обязаны распознавать установку каких-либо конкретных имён свойств.
- Параметры:
-
name- Имя свойства, которое является непустым полностью квалифицированным URI. -
object- Запрашиваемое значение свойства. - Исключения:
-
SAXNotRecognizedException- Если значение свойства нельзя назначить или получить. -
SAXNotSupportedException- КогдаValidatorHandlerраспознаёт имя свойства, но не может установить запрашиваемое значение. -
NullPointerException- Когдаnameравноnull.
getProperty
public Object getProperty(String name)
throws SAXNotRecognizedException,
SAXNotSupportedException Получить значение свойства.
Имя свойства — любой полностью квалифицированный URI. Возможна ситуация, когда ValidatorHandler распознаёт имя свойства, но временно не может вернуть его значение. Некоторые значения свойств могут быть доступны только в определённых контекстах, таких как перед, во время или после валидации.
ValidatorHandler не обязаны распознавать какие-либо конкретные имена свойств.
Реализаторы могут (и должны) придумывать свои собственные свойства, используя имена, основанные на своих собственных 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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.xml/javax/xml/validation/ValidatorHandler.html