Класс 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получит ненулевые строки для всех трех параметров. - Приложения должны обеспечить правильный вызов
ValidatorHandlerметодовContentHandler.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.)
Обратите внимание, что эта функция НЕ влияет на способ получения событий 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 | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создает и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли этот объект какому-либо другому объекту. |
protected void |
finalize() |
Устарело, будет удалено: этот элемент API может быть удален в будущей версии. Финализация объявлена устаревшей и будет удалена в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Приостанавливает текущий поток до его пробуждения, обычно в результате вызова notify или interrupt. |
final void |
wait |
Приостанавливает текущий поток до его пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Приостанавливает текущий поток до его пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
Методы, объявленные в интерфейсе ContentHandler
characters, declaration, endDocument, endElement, endPrefixMapping, ignorableWhitespace, processingInstruction, setDocumentLocator, skippedEntity, startDocument, startElement, startPrefixMapping | Модификатор и тип | Метод | Описание |
|---|---|---|
void |
characters |
Получает уведомление о символьных данных. |
default void |
declaration |
Получает уведомление об объявлении XML. |
void |
endDocument() |
Получает уведомление о завершении документа. |
void |
endElement |
Получает уведомление о закрывающем элементе. |
void |
endPrefixMapping |
Завершает область действия сопоставления префикса и URI. |
void |
ignorableWhitespace |
Получает уведомление о незначащих пробельных символах в содержимом элемента. |
void |
processingInstruction |
Получает уведомление об инструкции обработки. |
void |
setDocumentLocator |
Получает объект для определения источника событий документа SAX. |
void |
skippedEntity |
Получает уведомление о пропущенной сущности. |
void |
startDocument() |
Получает уведомление о начале документа. |
void |
startElement |
Получает уведомление об открывающем элементе. |
void |
startPrefixMapping |
Начинает область действия сопоставления пространства имен префикса и URI. |
Подробное описание конструкторов
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.