Интерфейс XMLReader
- Все известные подынтерфейсы:
- XMLFilter
- Все известные реализующие классы:
- ParserAdapter, XMLFilterImpl
public interface XMLReader
Интерфейс для чтения XML-документа с использованием обратных вызовов.
Этот модуль, как исходный код, так и документация, находится в общественном достоянии и поставляется БЕЗ ГАРАНТИЙ. См. http://www.saxproject.org для получения дополнительной информации.
Примечание: несмотря на свое название, этот интерфейс не расширяет стандартный Java Reader интерфейс, поскольку чтение XML — это принципиально другая операция, чем чтение данных символов.
XMLReader — это интерфейс, который должен реализовывать драйвер SAX2 XML-парсера. Этот интерфейс позволяет приложению устанавливать и запрашивать функции и свойства в парсере, регистрировать обработчики событий для обработки документов и инициировать анализ документа.
Предполагается, что все интерфейсы SAX являются синхронными: методы parse не должны возвращаться до завершения анализа, и средства чтения должны ждать возврата обратного вызова обработчика событий, прежде чем сообщать о следующем событии.
Этот интерфейс заменяет (теперь устаревший) интерфейс SAX 1.0 Parser. Интерфейс XMLReader содержит два важных улучшения по сравнению со старым интерфейсом Parser (а также некоторые незначительные):
- он добавляет стандартный способ запроса и установки функций и свойств; и
- он добавляет поддержку пространств имен, которая необходима для многих более высокоуровневых стандартов XML.
Существуют адаптеры для преобразования SAX1 Parser в SAX2 XMLReader и наоборот.
- С версии:
- 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(InputSource input) Разбирает XML-документ. |
void |
parse(String systemId) Разбирает XML-документ из идентификатора системы (URI). |
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, нет независимого от реализации способа показать, выполняет ли базовый анализатор валидацию, разворачивает ли внешние сущности и так далее.)
Все XMLReaders обязаны распознавать имена функциональности 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 может предоставлять значение функциональности, но быть не в состоянии изменить текущее значение. Некоторые значения функциональности могут быть неизменяемыми или изменяемыми только в определённых контекстах, таких как до, во время или после анализа.
Все XMLReaders обязаны поддерживать установку 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 может распознавать имя свойства, но временно быть не в состоянии вернуть его значение. Некоторые значения свойств могут быть доступны только в определённых контекстах, таких как до, во время или после анализа.
XMLReaders не обязаны распознавать какие-либо конкретные имена свойств, хотя начальный основной набор документирован для 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 может распознавать имя свойства, но быть не в состоянии изменить текущее значение. Некоторые значения свойств могут быть неизменяемыми или изменяемыми только в определённых контекстах, таких как до, во время или после анализа.
XMLReaders не обязаны распознавать установку каких-либо конкретных имён свойств, хотя основной набор определён 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)
parse
void parse(InputSource input)
throws IOException,
SAXException Разбирает XML-документ.
Приложение может использовать этот метод, чтобы указать XML-читателю начать разбор XML-документа из любого допустимого источника ввода (поток символов, байтовый поток или URI).
Приложения не могут вызывать этот метод во время анализа (вместо этого они должны создавать новый XMLReader для каждого вложенного XML-документа). После завершения анализа приложение может повторно использовать один и тот же объект XMLReader, возможно, с другим источником ввода. Конфигурация объекта XMLReader (например, привязки обработчиков и значения, установленные для флагов функциональности и свойств), не изменяется по завершении анализа, если только определение этого аспекта конфигурации явно не указывает другое поведение. (Например, флаги функциональности или свойства, показывающие характеристики анализируемого документа.)
Во время анализа XMLReader будет предоставлять информацию о XML-документе через зарегистрированные обработчики событий.
Этот метод является синхронным: он не вернётся, пока не закончится разбор. Если клиентское приложение хочет преждевременно завершить разбор, оно должно выбросить исключение.
- Параметры:
-
input- Источник ввода для верхнего уровня XML-документа. - Исключения:
-
SAXException- Любое исключение SAX, возможно, оборачивающее другое исключение. -
IOException- Исключение ввода-вывода от анализатора, возможно, из байтового потока или потока символов, предоставленного приложением. - См. также:
-
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)
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)
© 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.