Spec-Zone.ru › OpenJDK 17

Интерфейс XMLReader

Все известные подинтерфейсы:
XMLFilter
Все известные реализующие классы:
ParserAdapter, XMLFilterImpl
public interface XMLReader
Интерфейс для чтения XML-документа с помощью обратных вызовов.

XMLReader — это интерфейс, который должен реализовать SAX2 драйвер XML-парсера. Этот интерфейс позволяет приложению устанавливать и запросы параметры и свойства в парсере, регистрировать обработчики событий для обработки документа и инициировать разбор документа.

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

Этот интерфейс заменяет устаревший интерфейс SAX 1.0 Parser. Интерфейс XMLReader содержит два важных улучшения по сравнению со старым интерфейсом Parser (а также некоторые незначительные):

  1. он добавляет стандартный способ запроса и установки параметров и свойств; и
  2. он добавляет поддержку пространств имен, которая необходима для многих стандартов XML более высокого уровня.

Доступны адаптеры для преобразования SAX1 Parser в SAX2 XMLReader и наоборот.

Примечание API:
Несмотря на свое название, этот интерфейс не расширяет стандартный Java-интерфейс Reader, потому что чтение XML — это принципиально другая деятельность, чем чтение символьных данных.
С:
1.4, SAX 2.0
См. также:
  • XMLFilter
  • ParserAdapter
  • XMLReaderAdapter

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

Модификатор и тип Метод Описание
ContentHandler getContentHandler()
Возвращает текущий обработчик содержимого.
DTDHandler getDTDHandler()
Возвращает текущий обработчик DTD.
EntityResolver getEntityResolver()
Возвращает текущий разрешитель сущностей.
ErrorHandler getErrorHandler()
Возвращает текущий обработчик ошибок.
boolean getFeature(String name)
Ищет значение флага свойства.
Object getProperty(String name)
Ищет значение свойства.
void parse(String systemId)
Разбор XML-документа по идентификатору системы (URI).
void parse(InputSource input)
Разбор XML-документа.
void setContentHandler(ContentHandler handler)
Разрешает приложению зарегистрировать обработчик события содержимого.
void setDTDHandler(DTDHandler handler)
Разрешает приложению зарегистрировать обработчик события DTD.
void setEntityResolver(EntityResolver resolver)
Разрешает приложению зарегистрировать разрешитель сущностей.
void setErrorHandler(ErrorHandler handler)
Разрешает приложению зарегистрировать обработчик событий ошибок.
void setFeature(String name, boolean value)
Устанавливает значение флага свойства.
void setProperty(String name, Object value)
Устанавливает значение свойства.

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

getFeature

boolean getFeature(String name) throws SAXNotRecognizedException, SAXNotSupportedException
Получение значения флага функции.

Имя функции — любой полностью квалифицированный URI. Возможна ситуация, когда XMLReader распознаёт имя функции, но временно не может вернуть его значение. Некоторые значения функций могут быть доступны только в определённых контекстах, таких как до, во время или после разбора. Также некоторые значения функций могут быть недоступны программно. (В случае адаптера для SAX1 Parser, нет независимого от реализации способа проверить, выполняет ли основной анализатор валидацию, расширяет ли внешние сущности и так далее.)

Все XMLReader обязаны распознавать имена функций http://xml.org/sax/features/namespaces и http://xml.org/sax/features/namespace-prefixes.

Типичный пример использования:

 XMLReader r = new MySAXDriver();

                         // try to activate validation
 try {
   r.setFeature("http://xml.org/sax/features/validation", true);
 } catch (SAXException e) {
   System.err.println("Cannot activate validation.");
 }

                         // register event handlers
 r.setContentHandler(new MyContentHandler());
 r.setErrorHandler(new MyErrorHandler());

                         // parse the first document
 try {
   r.parse("http://www.foo.com/mydoc.xml");
 } catch (IOException e) {
   System.err.println("I/O exception reading XML document");
 } catch (SAXException e) {
   System.err.println("XML exception reading document.");
 }
 

Реализаторы могут (и им рекомендуется) изобретать свои собственные функции, используя имена, основанные на своих собственных URI.

Параметры:
name - Имя функции, являющееся полностью квалифицированным URI.
Возвращает:
Текущее значение функции (true или false).
Исключения:
SAXNotRecognizedException - Если значение функции не может быть присвоено или извлечено.
SAXNotSupportedException - Когда XMLReader распознаёт имя функции, но не может определить её значение в данный момент.
См. также:
  • setFeature(java.lang.String, boolean)

setFeature

void setFeature(String name, boolean value) throws SAXNotRecognizedException, SAXNotSupportedException
Установка значения флага функции.

Имя функции — любой полностью квалифицированный URI. Возможна ситуация, когда XMLReader может отобразить значение функции, но не может изменить текущее значение. Некоторые значения функций могут быть неизменяемыми или изменяемыми только в определённых контекстах, например, до, во время или после разбора.

Все XMLReader обязаны поддерживать установку http://xml.org/sax/features/namespaces в значение true и http://xml.org/sax/features/namespace-prefixes в значение false.

Параметры:
name - Имя функции, являющееся полностью квалифицированным URI.
value - Запрашиваемое значение функции (true или false).
Исключения:
SAXNotRecognizedException - Если значение функции не может быть присвоено или извлечено.
SAXNotSupportedException - Когда XMLReader распознаёт имя функции, но не может установить запрашиваемое значение.
См. также:
  • getFeature(java.lang.String)

getProperty

Object getProperty(String name) throws SAXNotRecognizedException, SAXNotSupportedException
Получение значения свойства.

Имя свойства — любой полностью квалифицированный URI. Возможна ситуация, когда XMLReader распознаёт имя свойства, но временно не может вернуть его значение. Некоторые значения свойств могут быть доступны только в определённых контекстах, таких как до, во время или после разбора.

XMLReader не обязаны распознавать какие-либо конкретные имена свойств, хотя начальный набор основных свойств документирован для SAX2.

Реализаторы могут (и им рекомендуется) изобретать свои собственные свойства, используя имена, основанные на своих собственных URI.

Параметры:
name - Имя свойства, являющееся полностью квалифицированным URI.
Возвращает:
Текущее значение свойства.
Исключения:
SAXNotRecognizedException - Если значение свойства не может быть присвоено или извлечено.
SAXNotSupportedException - Когда XMLReader распознаёт имя свойства, но не может определить его значение в данный момент.
См. также:
  • setProperty(java.lang.String, java.lang.Object)

setProperty

void setProperty(String name, Object value) throws SAXNotRecognizedException, SAXNotSupportedException
Установка значения свойства.

Имя свойства — любой полностью квалифицированный URI. Возможна ситуация, когда XMLReader распознаёт имя свойства, но не может изменить текущее значение. Некоторые значения свойств могут быть неизменяемыми или изменяемыми только в определённых контекстах, например, до, во время или после разбора.

XMLReader не обязаны распознавать установку каких-либо конкретных имён свойств, хотя основной набор определён SAX2.

Этот метод также является стандартным механизмом для установки расширенных обработчиков.

Параметры:
name - Имя свойства, являющееся полностью квалифицированным URI.
value - Запрашиваемое значение для свойства.
Исключения:
SAXNotRecognizedException - Если значение свойства не может быть присвоено или извлечено.
SAXNotSupportedException - Когда XMLReader распознаёт имя свойства, но не может установить запрашиваемое значение.

setEntityResolver

void setEntityResolver(EntityResolver resolver)
Разрешение приложения зарегистрировать обработчик сущностей.

Если приложение не регистрирует обработчик сущностей, XMLReader выполнит свой собственный обработчик по умолчанию.

Приложения могут зарегистрировать новый или другой обработчик посреди разбора, и SAX-парсер должен немедленно начать использовать новый обработчик.

Параметры:
resolver - Обработчик сущностей.
См. также:
  • getEntityResolver()

getEntityResolver

EntityResolver getEntityResolver()
Возвращение текущего обработчика сущностей.
Возвращает:
Текущий обработчик сущностей или null, если он не был зарегистрирован.
См. также:
  • setEntityResolver(org.xml.sax.EntityResolver)

setDTDHandler

void setDTDHandler(DTDHandler handler)
Разрешение приложения зарегистрировать обработчик событий DTD.

Если приложение не регистрирует обработчик DTD, все события DTD, сообщённые SAX-парсером, будут проигнорированы.

Приложения могут зарегистрировать новый или другой обработчик посреди разбора, и SAX-парсер должен немедленно начать использовать новый обработчик.

Параметры:
handler - Обработчик DTD.
См. также:
  • getDTDHandler()

getDTDHandler

DTDHandler getDTDHandler()
Возвращение текущего обработчика DTD.
Возвращает:
Текущий обработчик DTD или null, если он не был зарегистрирован.
См. также:
  • setDTDHandler(org.xml.sax.DTDHandler)

setContentHandler

void setContentHandler(ContentHandler handler)
Разрешение приложения зарегистрировать обработчик событий содержимого.

Если приложение не регистрирует обработчик содержимого, все события содержимого, сообщённые SAX-парсером, будут проигнорированы.

Приложения могут зарегистрировать новый или другой обработчик посреди разбора, и SAX-парсер должен немедленно начать использовать новый обработчик.

Параметры:
handler - Обработчик содержимого.
См. также:
  • getContentHandler()

getContentHandler

ContentHandler getContentHandler()
Возвращение текущего обработчика содержимого.
Возвращает:
Текущий обработчик содержимого или null, если он не был зарегистрирован.
См. также:
  • setContentHandler(org.xml.sax.ContentHandler)

setErrorHandler

void setErrorHandler(ErrorHandler handler)
Разрешение приложения зарегистрировать обработчик событий ошибок.

Если приложение не регистрирует обработчик ошибок, все события ошибок, сообщённые SAX-парсером, будут проигнорированы; однако, нормальная обработка может не продолжиться. Настоятельно рекомендуется, чтобы все SAX-приложения реализовывали обработчик ошибок, чтобы избежать неожиданных ошибок.

Приложения могут зарегистрировать новый или другой обработчик посреди разбора, и SAX-парсер должен немедленно начать использовать новый обработчик.

Параметры:
handler - Обработчик ошибок.
См. также:
  • getErrorHandler()

getErrorHandler

ErrorHandler getErrorHandler()
Возвращение текущего обработчика ошибок.
Возвращает:
Текущий обработчик ошибок или null, если он не был зарегистрирован.
См. также:
  • setErrorHandler(org.xml.sax.ErrorHandler)

Обработка

void parse(InputSource input) throws IOException, SAXException
Обработка XML-документа.

Приложение может использовать этот метод для указания XML-чтецу начать обработку XML-документа из любого допустимого источника ввода (потока символов, потока байтов или URI).

Приложения не должны вызывать этот метод во время обработки (они должны создавать новый объект XMLReader для каждого вложенного XML-документа). После завершения обработки приложение может повторно использовать тот же объект XMLReader, возможно, с другим источником ввода. Настройка объекта XMLReader (например, привязки обработчиков и значения, установленные для флагов функций и свойств), не изменяется завершением обработки, если только определение этого аспекта конфигурации не указывает другое поведение. (Например, флаги функций или свойства, раскрывающие характеристики обрабатываемого документа.)

Во время обработки XMLReader предоставляет информацию о XML-документе через зарегистрированные обработчики событий.

Этот метод является синхронным: он не вернётся, пока обработка не закончится. Если клиентское приложение хочет прервать обработку, оно должно выбросить исключение.

Параметры:
input - Источник ввода для верхнего уровня XML-документа.
Исключения:
SAXException - Любое исключение SAX, возможно, обертывающее другое исключение.
IOException - Исключение IO от анализатора, возможно, из потока байтов или потока символов, предоставленного приложением.
См. также:
  • InputSource
  • parse(java.lang.String)
  • setEntityResolver(org.xml.sax.EntityResolver)
  • setDTDHandler(org.xml.sax.DTDHandler)
  • setContentHandler(org.xml.sax.ContentHandler)
  • setErrorHandler(org.xml.sax.ErrorHandler)

Обработка

void parse(String systemId) throws IOException, SAXException
Обработка XML-документа из идентификатора системы (URI).

Этот метод является сокращением для распространённого случая чтения документа из идентификатора системы. Он точно эквивалентен следующему:

 parse(new InputSource(systemId));
 

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

Параметры:
systemId - Идентификатор системы (URI).
Исключения:
SAXException - Любое исключение SAX, возможно, обертывающее другое исключение.
IOException - Исключение IO от анализатора, возможно, из потока байтов или потока символов, предоставленного приложением.
См. также:
  • parse(org.xml.sax.InputSource)

© 1993, 2021, 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/17/docs/api/java.xml/org/xml/sax/XMLReader.html

Spec-Zone.ru

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