Spec-Zone.ru › OpenJDK 27

Класс 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 следующим образом:

  1. События startElement/endElement должны получать ненулевые строки для uri, localName и qname, хотя SAX допускает, что некоторые из них могут иметь значение null. Аналогично, указанный пользователем ContentHandler получит ненулевые строки для всех трех параметров.
  2. Приложения должны обеспечить правильный вызов ValidatorHandler методов ContentHandler.startPrefixMapping(String,String) и ContentHandler.endPrefixMapping(String). Аналогично, указанный пользователем ContentHandler получит события startPrefixMapping/endPrefixMapping. Если ValidatorHandler добавляет дополнительные привязки пространств имен, указанный пользователем ContentHandler получит дополнительные события startPrefixMapping/endPrefixMapping.
  3. 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

Краткое описание конструкторов

ValidatorHandler()
Модификатор Конструктор Описание
protected
Конструктор для производных классов.

Краткое описание методов

Модификатор и тип Метод Описание
abstract ContentHandler getContentHandler()
Получает ContentHandler, которому передается дополненный результат проверки.
abstract ErrorHandler getErrorHandler()
Получает текущий ErrorHandler, заданный для этого ValidatorHandler.
boolean getFeature(String name)
Получает значение флага функции.
Object getProperty(String name)
Получает значение свойства.
abstract LSResourceResolver getResourceResolver()
Получает текущий LSResourceResolver, заданный для этого ValidatorHandler.
abstract TypeInfoProvider getTypeInfoProvider()
Получает реализацию TypeInfoProvider этого ValidatorHandler.
abstract void setContentHandler(ContentHandler receiver)
Задает ContentHandler, которому передается дополненный результат проверки.
abstract void setErrorHandler(ErrorHandler errorHandler)
Задает ErrorHandler для получения ошибок, возникающих при проверке.
void setFeature(String name, boolean value)
Задает функцию для этого ValidatorHandler.
void setProperty(String name, Object object)
Задает значение свойства.
abstract void setResourceResolver(LSResourceResolver resourceResolver)
Задает LSResourceResolver для настройки разрешения ресурсов во время проверки.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создает и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли этот объект какому-либо другому объекту.
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(long timeoutMillis)
Приостанавливает текущий поток до его пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Приостанавливает текущий поток до его пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени.

Методы, объявленные в интерфейсе ContentHandler

characters, declaration, endDocument, endElement, endPrefixMapping, ignorableWhitespace, processingInstruction, setDocumentLocator, skippedEntity, startDocument, startElement, startPrefixMapping
Модификатор и тип Метод Описание
void characters(char[] ch, int start, int length)
Получает уведомление о символьных данных.
default void declaration(String version, String encoding, String standalone)
Получает уведомление об объявлении XML.
void endDocument()
Получает уведомление о завершении документа.
void endElement(String uri, String localName, String qName)
Получает уведомление о закрывающем элементе.
void endPrefixMapping(String prefix)
Завершает область действия сопоставления префикса и URI.
void ignorableWhitespace(char[] ch, int start, int length)
Получает уведомление о незначащих пробельных символах в содержимом элемента.
void processingInstruction(String target, String data)
Получает уведомление об инструкции обработки.
void setDocumentLocator(Locator locator)
Получает объект для определения источника событий документа SAX.
void skippedEntity(String name)
Получает уведомление о пропущенной сущности.
void startDocument()
Получает уведомление о начале документа.
void startElement(String uri, String localName, String qName, Attributes atts)
Получает уведомление об открывающем элементе.
void startPrefixMapping(String prefix, String uri)
Начинает область действия сопоставления пространства имен префикса и URI.

Подробное описание конструкторов

ValidatorHandler

protected ValidatorHandler()

Конструктор для производных классов.

Конструктор ничего не делает.

Производные классы должны создавать объекты ValidatorHandler, у которых есть null ErrorHandler и null LSResourceResolver.

Подробное описание методов

setContentHandler

public abstract void setContentHandler(ContentHandler receiver)
Устанавливает ContentHandler, который получает дополненный результат проверки.

Если указан ContentHandler, ValidatorHandler будет работать как фильтр и, по существу, копировать входящие события в указанный ContentHandler.

При этом ValidatorHandler может изменять события, например добавляя атрибуты со значениями по умолчанию.

ValidatorHandler может в некоторой степени буферизовать события, но для того, чтобы ValidatorHandler можно было использовать парсером, необходимо выполнить следующие требования.

  1. При вызове для ValidatorHandler методов ContentHandler.startElement(String, String, String, Attributes), ContentHandler.endElement(String, String, String), ContentHandler.startDocument() или ContentHandler.endDocument() тот же метод должен быть вызван для того же события у заданного пользователем ContentHandler до возврата из обратного вызова.
  2. ValidatorHandler не может добавлять элементы, отсутствовавшие во входных данных.
  3. ValidatorHandler не может удалять атрибуты, присутствовавшие во входных данных.

Если метод обратного вызова указанного ContentHandler выбрасывает исключение, из ValidatorHandler должен быть выброшен тот же объект исключения. О таком исключении не следует уведомлять ErrorHandler.

Этот метод можно вызвать даже в середине проверки.

Параметры:
receiver — объект ContentHandler или значение null.

getContentHandler

public abstract ContentHandler getContentHandler()
Возвращает ContentHandler, который получает дополненный результат проверки.
Возвращает:
Этот метод возвращает объект, последний раз заданный методом getContentHandler(), или null, если этот метод ни разу не вызывался с момента создания данного ValidatorHandler.
См. также:
  • setContentHandler(ContentHandler)

setErrorHandler

public abstract void setErrorHandler(ErrorHandler errorHandler)
Устанавливает ErrorHandler, который будет получать ошибки, возникающие во время проверки.

Обработчик ошибок можно использовать для настройки обработки ошибок во время проверки. Если задан ErrorHandler, ошибки, обнаруженные во время проверки, сначала будут переданы ErrorHandler.

Обработчик ошибок может немедленно прервать дальнейшую проверку, выбросив из обработчика SAXException. Например, он может вывести сообщение об ошибке на экран и попытаться продолжить проверку, нормально завершив метод ErrorHandler.

Если метод ErrorHandler выбрасывает какое-либо Throwable, тот же объект 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)

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API