Интерфейс DocumentHandler
- Все известные реализующие классы:
-
HandlerBase,ParserAdapter
@Deprecated(since="1.5") public interface DocumentHandler
Это был основной интерфейс обработки событий для SAX1; в SAX2 он был заменен на ContentHandler, который предоставляет поддержку пространств имен и сообщает о пропущенных сущностях. Этот интерфейс включен в SAX2 только для поддержки устаревших приложений SAX1.
Порядок событий в этом интерфейсе очень важен и отражает порядок информации в самом документе. Например, все содержимое элемента (символьные данные, инструкции обработки и/или подэлементы) будут появляться в порядке, между событием startElement и соответствующим событием endElement.
Авторы приложений, которые не хотят реализовывать весь интерфейс, могут вывести класс из HandlerBase, который реализует стандартное функциональное поведение; авторы парсеров могут создать экземпляр HandlerBase, чтобы получить обработчик по умолчанию. Приложение может найти местоположение любого события документа, используя интерфейс Locator, предоставленный парсером через метод setDocumentLocator.
- С:
- 1.4, SAX 1.0
- См. также:
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
characters |
Устарело. Получить уведомление о символьных данных. |
void |
endDocument() |
Устарело. Получить уведомление об окончании документа. |
void |
endElement |
Устарело. Получить уведомление об окончании элемента. |
void |
ignorableWhitespace |
Устарело. Получить уведомление о пренебрежимых пробелах в содержимом элемента. |
void |
processingInstruction |
Устарело. Получить уведомление об инструкции обработки. |
void |
setDocumentLocator |
Устарело. Получить объект для определения источника событий документа SAX. |
void |
startDocument() |
Устарело. Получить уведомление о начале документа. |
void |
startElement |
Устарело. Получить уведомление о начале элемента. |
Подробное описание методов
setDocumentLocator
void setDocumentLocator(Locator locator)
SAX-парсерам настоятельно рекомендуется (хотя и не является обязательным) предоставлять локатор: если это сделано, он должен быть передан приложению с помощью этого метода перед вызовом любого другого метода интерфейса DocumentHandler.
Локатор позволяет приложению определить конечную позицию любого события, связанного с документом, даже если парсер не сообщает об ошибке. Как правило, приложение использует эту информацию для сообщения об собственных ошибках (например, текстовое содержимое, которое не соответствует бизнес-правилам приложения). Информация, возвращаемая локатором, вероятно, не будет достаточной для использования с поисковой системой.
Обратите внимание, что локатор будет возвращать корректную информацию только во время вызова событий в этом интерфейсе. Приложение не должно пытаться использовать его в любое другое время.
- Параметры:
-
locator- Объект, который может вернуть расположение любого события SAX-документа. - См. также:
startDocument
void startDocument() throws SAXException
SAX-парсер вызовет этот метод только один раз, перед любыми другими методами в этом интерфейсе или в DTDHandler (кроме setDocumentLocator).
- Исключения:
-
SAXException- Любое исключение SAX, возможно, обертывающее другое исключение.
endDocument
void endDocument() throws SAXException
SAX-парсер вызовет этот метод только один раз, и это будет последний метод, вызванный во время разбора. Парсер не вызовет этот метод до тех пор, пока не прекратит разбор (из-за невосстановимой ошибки) или не достигнет конца входных данных.
- Исключения:
-
SAXException- Любое исключение SAX, возможно, обертывающее другое исключение.
startElement
void startElement(String name, AttributeList atts) throws SAXException
Парсер вызовет этот метод в начале каждого элемента в XML-документе; будет соответствующее событие endElement() для каждого события startElement() (даже когда элемент пуст). Все содержимое элемента будет сообщено в порядке, прежде чем произойдёт соответствующее событие endElement().
Если имя элемента имеет префикс имени пространства имён, префикс всё ещё будет добавлен. Обратите внимание, что предоставленный список атрибутов будет содержать только атрибуты со явными значениями (указанными или по умолчанию): атрибуты #IMPLIED будут опущены.
- Параметры:
-
name- Имя типа элемента. -
atts- Атрибуты, прикреплённые к элементу, если таковые имеются. - Исключения:
-
SAXException- Любое исключение SAX, возможно, обертывающее другое исключение. - См. также:
endElement
void endElement(String name) throws SAXException
SAX-парсер вызовет этот метод в конце каждого элемента в XML-документе; будет соответствующее событие startElement() для каждого события endElement() (даже когда элемент пуст).
Если имя элемента имеет префикс имени пространства имён, префикс всё ещё будет прикреплён к имени.
- Параметры:
-
name- Имя типа элемента - Исключения:
-
SAXException- Любое исключение SAX, возможно, обертывающее другое исключение.
characters
void characters(char[] ch, int start, int length) throws SAXException
Парсер вызовет этот метод для отчёта о каждом фрагменте данных символов. SAX-парсеры могут возвращать все смежные данные символов в одном фрагменте или могут разделить их на несколько фрагментов; однако все символы в любом отдельном событии должны происходить из одного внешнего объекта, чтобы локатор предоставлял полезную информацию.
Приложение не должно пытаться читать из массива за пределами указанного диапазона.
Обратите внимание, что некоторые парсеры будут сообщать о пробелах с помощью метода ignorableWhitespace(), а не с этим методом (валидирующие парсеры должны это делать).
- Параметры:
-
ch- Символы из XML-документа. -
start- Начальная позиция в массиве. -
length- Количество символов для чтения из массива. - Исключения:
-
SAXException- Любое исключение SAX, возможно, обертывающее другое исключение. - См. также:
ignorableWhitespace
void ignorableWhitespace(char[] ch, int start, int length) throws SAXException
Валидирующие парсеры должны использовать этот метод для отчёта о каждом фрагменте пробелов, которые можно игнорировать (см. рекомендацию W3C XML 1.0, раздел 2.10): невалидирующие парсеры также могут использовать этот метод, если они способны анализировать и использовать модели содержимого.
SAX-парсеры могут возвращать все смежные пробелы в одном фрагменте или могут разделить их на несколько фрагментов; однако все символы в любом отдельном событии должны происходить из одного внешнего объекта, чтобы локатор предоставлял полезную информацию.
Приложение не должно пытаться читать из массива за пределами указанного диапазона.
- Параметры:
-
ch- Символы из XML-документа. -
start- Начальная позиция в массиве. -
length- Количество символов для чтения из массива. - Исключения:
-
SAXException- Любое исключение SAX, возможно, обертывающее другое исключение. - См. также:
processingInstruction
void processingInstruction(String target, String data) throws SAXException
Парсер вызовет этот метод один раз для каждой инструкции обработки, найденной: обратите внимание, что инструкции обработки могут появляться до или после основного элемента документа.
SAX-парсер никогда не должен сообщать об XML-декларации (XML 1.0, раздел 2.8) или декларации текста (XML 1.0, раздел 4.3.1) с помощью этого метода.
- Параметры:
-
target- Цель инструкции обработки. -
data- Данные инструкции обработки или null, если они не были предоставлены. - Исключения:
-
SAXException- Любое исключение SAX, возможно, обертывающее другое исключение.
© 1993, 2023, 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/21/docs/api/java.xml/org/xml/sax/DocumentHandler.html
ContentHandler, который включает поддержку пространств имен.