Spec-Zone.ru › OpenJDK 25

Интерфейс XMLReader

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

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

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

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

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

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

Примечание 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 может распознавать имя функции, но временно не иметь возможности вернуть её значение. Некоторые значения функций могут быть доступны только в определённых контекстах, например до, во время или после разбора. Кроме того, некоторые значения функций могут быть недоступны программно. (В случае адаптера для Parser 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(String, boolean)

setFeature

void setFeature(String name, boolean value) throws SAXNotRecognizedException, SAXNotSupportedException
Задаёт значение флага функции.

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

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

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

getProperty

Object getProperty(String name) throws SAXNotRecognizedException, SAXNotSupportedException
Возвращает значение свойства.

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

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

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

Параметры:
name — имя свойства, представляющее собой URI с полным указанием.
Возвращает:
Текущее значение свойства.
Исключения:
SAXNotRecognizedException — если значение свойства нельзя задать или получить.
SAXNotSupportedException — если XMLReader распознаёт имя свойства, но в данный момент не может определить его значение.
См. также:
  • setProperty(String, 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(EntityResolver)

setDTDHandler

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

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

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

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

getDTDHandler

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

setContentHandler

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

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

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

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

getContentHandler

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

setErrorHandler

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

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

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

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

getErrorHandler

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

parse

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

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

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

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

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

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

parse

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

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

parse(new InputSource(systemId));

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

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

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по 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/org/xml/sax/XMLReader.html

Spec-Zone.ru

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