Интерфейс XMLReader
- Все известные подинтерфейсы:
XMLFilter
- Все известные реализующие классы:
ParserAdapter, XMLFilterImpl
public interface XMLReader
XMLReader — это интерфейс, который должен реализовывать драйвер SAX2 для XML-парсера. Этот интерфейс позволяет приложению задавать и запрашивать функции и свойства парсера, регистрировать обработчики событий для обработки документа и запускать разбор документа.
Предполагается, что все интерфейсы SAX являются синхронными: методы parse не должны возвращать управление до завершения разбора, а считыватели должны дожидаться возврата из обратного вызова обработчика событий, прежде чем сообщать о следующем событии.
Этот интерфейс заменяет устаревший интерфейс SAX 1.0 Parser. Интерфейс XMLReader имеет два важных улучшения по сравнению со старым интерфейсом Parser (а также несколько незначительных):
- добавлен стандартный способ запрашивать и задавать функции и свойства; и
- добавлена поддержка пространств имён, необходимая для многих высокоуровневых стандартов XML.
Существуют адаптеры для преобразования Parser SAX1 в XMLReader SAX2 и наоборот.
- Примечание API:
- Несмотря на название, этот интерфейс не расширяет стандартный интерфейс Java
Reader, поскольку чтение XML принципиально отличается от чтения символьных данных. - С версии:
- 1.4, SAX 2.0
- См. также:
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
ContentHandler |
getContentHandler() |
Возвращает текущий обработчик содержимого. |
DTDHandler |
getDTDHandler() |
Возвращает текущий обработчик DTD. |
EntityResolver |
getEntityResolver() |
Возвращает текущий обработчик сущностей. |
ErrorHandler |
getErrorHandler() |
Возвращает текущий обработчик ошибок. |
boolean |
getFeature |
Возвращает значение флага функции. |
Object |
getProperty |
Возвращает значение свойства. |
void |
parse |
Разбирает XML-документ по системному идентификатору (URI). |
void |
parse |
Разбирает XML-документ. |
void |
setContentHandler |
Позволяет приложению зарегистрировать обработчик событий содержимого. |
void |
setDTDHandler |
Позволяет приложению зарегистрировать обработчик событий DTD. |
void |
setEntityResolver |
Позволяет приложению зарегистрировать обработчик сущностей. |
void |
setErrorHandler |
Позволяет приложению зарегистрировать обработчик событий ошибок. |
void |
setFeature |
Задаёт значение флага функции. |
void |
setProperty |
Задаёт значение свойства. |
Подробное описание методов
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
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 распознаёт имя функции, но не может задать запрашиваемое значение. - См. также:
getProperty
Object getProperty(String name) throws SAXNotRecognizedException, SAXNotSupportedException
Имя свойства — это любой URI с полным указанием. XMLReader может распознавать имя свойства, но временно не иметь возможности вернуть его значение. Некоторые значения свойств могут быть доступны только в определённых контекстах, например до, во время или после разбора.
От XMLReader не требуется распознавать какие-либо конкретные имена свойств, однако для SAX2 документирован начальный основной набор.
Разработчики могут (и им рекомендуется) создавать собственные свойства, используя имена на основе собственных URI.
- Параметры:
-
name— имя свойства, представляющее собой URI с полным указанием. - Возвращает:
- Текущее значение свойства.
- Исключения:
-
SAXNotRecognizedException— если значение свойства нельзя задать или получить. -
SAXNotSupportedException— если XMLReader распознаёт имя свойства, но в данный момент не может определить его значение. - См. также:
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
EntityResolver getEntityResolver()
- Возвращает:
- Текущий обработчик сущностей или null, если обработчик не зарегистрирован.
- См. также:
setDTDHandler
void setDTDHandler(DTDHandler handler)
Если приложение не зарегистрировало обработчик DTD, все события DTD, о которых сообщает SAX-парсер, будут молча игнорироваться.
Приложения могут зарегистрировать новый или другой обработчик в середине разбора, и SAX-парсер должен немедленно начать использовать новый обработчик.
- Параметры:
-
handler— обработчик DTD. - См. также:
getDTDHandler
DTDHandler getDTDHandler()
- Возвращает:
- Текущий обработчик DTD или null, если обработчик не зарегистрирован.
- См. также:
setContentHandler
void setContentHandler(ContentHandler handler)
Если приложение не зарегистрировало обработчик содержимого, все события содержимого, о которых сообщает SAX-парсер, будут молча игнорироваться.
Приложения могут зарегистрировать новый или другой обработчик в середине разбора, и SAX-парсер должен немедленно начать использовать новый обработчик.
- Параметры:
-
handler— обработчик содержимого. - См. также:
getContentHandler
ContentHandler getContentHandler()
- Возвращает:
- Текущий обработчик содержимого или null, если обработчик не зарегистрирован.
- См. также:
setErrorHandler
void setErrorHandler(ErrorHandler handler)
Если приложение не зарегистрировало обработчик ошибок, все события ошибок, о которых сообщает SAX-парсер, будут молча игнорироваться; однако нормальная обработка может не продолжиться. Настоятельно рекомендуется, чтобы все приложения SAX реализовывали обработчик ошибок во избежание непредвиденных сбоев.
Приложения могут зарегистрировать новый или другой обработчик в середине разбора, и SAX-парсер должен немедленно начать использовать новый обработчик.
- Параметры:
-
handler— обработчик ошибок. - См. также:
getErrorHandler
ErrorHandler getErrorHandler()
- Возвращает:
- Текущий обработчик ошибок или null, если обработчик не зарегистрирован.
- См. также:
parse
void parse(InputSource input) throws IOException, SAXException
Приложение может использовать этот метод, чтобы указать XML-считывателю начать разбор XML-документа из любого допустимого источника ввода (потока символов, потока байтов или URI).
Приложения не могут вызывать этот метод во время выполнения разбора (для каждого вложенного XML-документа следует создавать новый XMLReader). После завершения разбора приложение может повторно использовать тот же объект XMLReader, возможно, с другим источником ввода. При завершении разбора конфигурация объекта XMLReader (например, привязки обработчиков и значения, заданные для флагов функций и свойств) не меняется, если только определение соответствующего аспекта конфигурации явно не предусматривает иное поведение. (Например, это может относиться к флагам функций или свойствам, предоставляющим характеристики разбираемого документа.)
Во время разбора XMLReader предоставляет сведения об XML-документе через зарегистрированные обработчики событий.
Этот метод является синхронным: он не вернёт управление до завершения разбора. Если клиентскому приложению нужно досрочно завершить разбор, следует выбросить исключение.
- Параметры:
-
input— источник ввода для верхнего уровня XML-документа. - Исключения:
-
SAXException— любое исключение SAX, возможно оборачивающее другое исключение. -
IOException— исключение ввода-вывода от парсера, возможно возникшее в потоке байтов или символов, предоставленном приложением. - См. также:
parse
void parse(String systemId) throws IOException, SAXException
Этот метод является сокращённой формой для распространённого случая чтения документа по системному идентификатору. Он полностью эквивалентен следующему:
parse(new InputSource(systemId));
Если системный идентификатор является URL, приложение должно полностью разрешить его до передачи парсеру.
- Параметры:
-
systemId— системный идентификатор (URI). - Исключения:
-
SAXException— любое исключение SAX, возможно оборачивающее другое исключение. -
IOException— исключение ввода-вывода от парсера, возможно возникшее в потоке байтов или символов, предоставленном приложением. - См. также:
© 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