Класс ValidatorHandler
- Все реализованные интерфейсы:
ContentHandler
public abstract class ValidatorHandler extends Object implements ContentHandler
Объект ValidatorHandler не потокобезопасен и не реентерабелен. Другими словами, приложение должно гарантировать, что один объект ValidatorHandler не используется из нескольких потоков одновременно.
ValidatorHandler проверяет, соответствуют ли события SAX набору ограничений, описанных в связанной Schema, и дополнительно может изменять события SAX (например, добавляя значения по умолчанию и т. п.).
ValidatorHandler расширяет ContentHandler, но уточняет базовое ContentHandler следующим образом:
- События startElement/endElement должны получать не null строки для
uri,localNameиqname, даже если SAX допускает их null-значение. Аналогично, заданный пользователемContentHandlerполучит не null строки для всех трёх параметров. - Приложения должны гарантировать, что методы
ValidatorHandlerContentHandler.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 по умолчанию.
- Since:
- 1.5
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Конструктор для производных классов. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
abstract ContentHandler |
getContentHandler() |
Получение ContentHandler, который получает результаты валидации. |
abstract ErrorHandler |
getErrorHandler() |
Получение текущего ErrorHandler, установленного для этого ValidatorHandler. |
boolean |
getFeature |
Получение значения флага функции. |
Object |
getProperty |
Получение значения свойства. |
abstract LSResourceResolver |
getResourceResolver() |
Получение текущего LSResourceResolver, установленного для этого ValidatorHandler. |
abstract TypeInfoProvider |
getTypeInfoProvider() |
Получение реализации TypeInfoProvider для этого ValidatorHandler. |
abstract void |
setContentHandler |
Установить ContentHandler, который получает результаты валидации. |
abstract void |
setErrorHandler |
Установить ErrorHandler для получения ошибок, возникших во время валидации. |
void |
setFeature |
Установить функцию для этого ValidatorHandler. |
void |
setProperty |
Установить значение свойства. |
abstract void |
setResourceResolver |
Установить LSResourceResolver для настройки разрешения ресурсов во время валидации. |
Методы, унаследованные от класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Методы, унаследованные от интерфейса org.xml.sax.ContentHandler
characters, declaration, 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- Обработчик событийContentHandlerили null.
getContentHandler
public abstract ContentHandler getContentHandler()
ContentHandler, получающий результат расширенной валидации.- Возвращает:
- Этот метод возвращает объект, последний установленный методом
getContentHandler(), или null, если этот метод не был вызван с момента создания этого классаValidatorHandler. - См. также:
setErrorHandler
public abstract void setErrorHandler(ErrorHandler errorHandler)
ErrorHandler для получения ошибок, возникших во время валидации. Обработчик ошибок может быть использован для настройки процесса обработки ошибок во время валидации. Если установлен обработчик ошибок ErrorHandler, ошибки, обнаруженные во время валидации, будут сначала отправлены обработчику ErrorHandler.
Обработчик ошибок может немедленно прервать дальнейшую валидацию, выбросив исключение SAXException из обработчика. Или, например, он может вывести ошибку на экран и попытаться продолжить валидацию, возвращаясь нормально из обработчика ErrorHandler.
Если любое исключение Throwable выброшено из обработчика ошибок ErrorHandler, то тот же объект исключения Throwable будет выброшен в корневой части стека вызовов.
Классу ValidatorHandler запрещено выбрасывать исключение 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 } }
При создании нового объекта ValidatorHandler это поле по умолчанию равно null.
- Параметры:
-
errorHandler- Новый обработчик ошибок. Может быть null.
getErrorHandler
public abstract ErrorHandler getErrorHandler()
ErrorHandler, установленного для этого класса ValidatorHandler.- Возвращает:
- Этот метод возвращает объект, последний установленный методом
setErrorHandler(ErrorHandler), или null, если этот метод не был вызван с момента создания этого классаValidatorHandler. - См. также:
setResourceResolver
public abstract void setResourceResolver(LSResourceResolver resourceResolver)
LSResourceResolver для настройки разрешения ресурсов во время валидации. Класс ValidatorHandler использует разборщик ресурсов LSResourceResolver при необходимости определения внешних ресурсов во время валидации, хотя то, что именно считается "определением внешних ресурсов", зависит от каждого языка схем.
Если разборщик ресурсов LSResourceResolver равен null, то реализация будет вести себя так, как если бы был установлен следующий разборщик ресурсов LSResourceResolver:
class DumbLSResourceResolver implementsLSResourceResolver{ publicLSInputresolveResource( 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. - См. также:
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
public void setFeature(String name, boolean value) throws SAXNotRecognizedException, SAXNotSupportedException
Устанавливает функцию для этого ValidatorHandler.
Функция может использоваться для управления способом, которым ValidatorHandler анализирует схемы. Имя функции — любой полностью квалифицированный URI. SchemaFactory может выводить значение функции, но не сможет изменить текущее значение. Некоторые значения функций могут быть неизменяемыми или изменяемыми только в определенных контекстах, таких как до, во время или после валидации.
Все реализации обязаны поддерживать функцию XMLConstants.FEATURE_SECURE_PROCESSING. Когда функция:
-
true: реализация ограничит обработку XML для соответствия ограничениям реализации. Примеры включают ограничения расширения сущностей и конструкции XML-схемы, которые будут потреблять большое количество ресурсов. Если обработка XML ограничена по соображениям безопасности, это будет сообщено с помощью вызова зарегистрированногоErrorHandler.fatalError(SAXParseException exception). См.setErrorHandler(ErrorHandler errorHandler). -
false: реализация будет обрабатывать XML в соответствии со спецификациями XML без учета возможных ограничений реализации.
- Параметры:
-
name— имя функции, которое является непустым полностью квалифицированным URI. -
value— запрашиваемое значение функции (true или false). - Исключения:
-
SAXNotRecognizedException— если значение функции нельзя назначить или извлечь. -
SAXNotSupportedException— когдаValidatorHandlerраспознает имя функции, но не может установить запрашиваемое значение. -
NullPointerException— когдаnameявляетсяnull. - См. также:
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. - См. также:
© 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://download.java.net/java/early_access/jdk24/docs/api/java.xml/javax/xml/validation/ValidatorHandler.html