Класс ValidatorHandler
- Все реализуемые интерфейсы:
ContentHandler
public abstract class ValidatorHandler extends Object implements ContentHandler
Объект ValidatorHandler не является потокобезопасным и не допускает повторного входа. Иными словами, приложение должно гарантировать, что один объект ValidatorHandler не используется одновременно более чем одним потоком.
ValidatorHandler проверяет, соответствуют ли события SAX набору ограничений, описанных в связанной Schema, и, кроме того, может изменять события SAX (например, добавлять значения по умолчанию и т. д.)
ValidatorHandler наследует ContentHandler, но уточняет поведение базового ContentHandler следующим образом:
- Для событий startElement/endElement должны передаваться ненулевые строки для
uri,localNameиqname, даже если SAX допускает, что некоторые из них могут быть null. Аналогично, указанный пользователемContentHandlerполучит ненулевые строки для всех трех параметров. - Приложения должны обеспечивать корректный вызов
ContentHandler.startPrefixMapping(String,String)иContentHandler.endPrefixMapping(String)объектаValidatorHandler. Аналогично, указанный пользователем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, указанного пользователем.)
Обратите внимание, что эта функция НЕ влияет на способ получения событий SAX объектом ValidatorHandler. Она лишь меняет способ дополнения событий SAX.
По умолчанию для этой функции задано значение false.
- Начиная с версии:
- 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 для настройки разрешения ресурсов во время проверки. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Методы, объявленные в интерфейсе 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 анализатором необходимо выполнить следующие требования.
- При вызове для объекта
ValidatorHandlerметодаContentHandler.startElement(String, String, String, Attributes),ContentHandler.endElement(String, String, String),ContentHandler.startDocument()илиContentHandler.endDocument()тот же метод для того же события должен быть вызван у указанного пользователем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.
Если из ErrorHandler выбрасывается какой-либо Throwable, тот же объект 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 Schema, потребляющие значительные ресурсы. Если обработка 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://docs.oracle.com/en/java/javase/25/docs/api/java.xml/javax/xml/validation/ValidatorHandler.html