Класс ValidatorHandler

Все реализуемые интерфейсы:
ContentHandler
public abstract class ValidatorHandler
extends Object
implements ContentHandler

Потоковый валидатор, работающий с потоком SAX.

Объект ValidatorHandler не потокобезопасен и не реентерабелен. Другими словами, приложение должно гарантировать, что один объект ValidatorHandler не используется из более чем одной нити в любой момент времени.

ValidatorHandler проверяет, соответствуют ли события SAX набору ограничений, описанных в ассоциированном Schema, и дополнительно может изменять события SAX (например, добавлять значения по умолчанию и т. д.).

ValidatorHandler расширяет ContentHandler, но уточняет базовый ContentHandler следующим образом:

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

Обратите внимание, что эта функция не влияет на способ получения ValidatorHandler событий SAX. Она лишь изменяет способ дополнения событий SAX.

Эта функция установлена в значение false по умолчанию.

С момента:
1.5

Конструкторы

Модификатор Конструктор Описание
protected ValidatorHandler()

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

Методы

Модификатор и тип Метод Описание
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 для настройки разрешения ресурсов во время процесса валидации.

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

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

characters, 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. Когда ContentHandler.startElement(String, String, String, Attributes), ContentHandler.endElement(String, String, String), ContentHandler.startDocument() или ContentHandler.endDocument() вызываются на ValidatorHandler, то же самое метод на пользовательском ContentHandler должен быть вызван для того же события до возврата из обратного вызова.
  2. ValidatorHandler не может вводить новые элементы, отсутствующие во входных данных.
  3. ValidatorHandler не может удалять атрибуты, присутствующие во входных данных.

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

Этот метод может быть вызван даже во время валидации.

Параметры:
receiver - A ContentHandler or a null value.

getContentHandler

public abstract ContentHandler getContentHandler()

Возвращает ContentHandler, который получает результат расширенной валидации.

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

setErrorHandler

public abstract void setErrorHandler(ErrorHandler errorHandler)

Устанавливает ErrorHandler для получения ошибок, возникших во время валидации.

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

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

Если любое исключение Throwable выбрасывается из ErrorHandler, то же самое исключение 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)

© 1993, 2020, 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/11/docs/api/java.xml/javax/xml/validation/ValidatorHandler.html

Spec-Zone .ru
спецификации, руководства, описания, API