Spec-Zone.ru › OpenJDK 25

Класс 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. Приложения должны обеспечивать корректный вызов ContentHandler.startPrefixMapping(String,String) и ContentHandler.endPrefixMapping(String) объекта ValidatorHandler. Аналогично, указанный пользователем 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

Методы, объявленные в интерфейсе 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 анализатором необходимо выполнить следующие требования.

  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, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.xml/javax/xml/validation/ValidatorHandler.html

Spec-Zone.ru

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