Spec-Zone.ru › OpenJDK 25

Интерфейс LexicalHandler

Все известные подинтерфейсы:
TransformerHandler
Все известные реализующие классы:
DefaultHandler2
public interface LexicalHandler
Обработчик расширения SAX2 для лексических событий.

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

События лексического обработчика относятся ко всему документу, а не только к элементу документа, и все события лексического обработчика должны происходить между событиями startDocument и endDocument обработчика содержимого.

Чтобы задать LexicalHandler для XML-считывателя, используйте метод setProperty с именем свойства http://xml.org/sax/properties/lexical-handler и объектом, реализующим этот интерфейс (или null), в качестве значения. Если считыватель не сообщает о лексических событиях, при попытке зарегистрировать обработчик будет выброшено исключение SAXNotRecognizedException.

Начиная с версии:
1.4, SAX 2.0 (расширения 1.0)

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

Модификатор и тип Метод Описание
void comment(char[] ch, int start, int length)
Сообщает о комментарии XML в любом месте документа.
void endCDATA()
Сообщает о завершении секции CDATA.
void endDTD()
Сообщает о завершении объявлений DTD.
void endEntity(String name)
Сообщает о завершении сущности.
void startCDATA()
Сообщает о начале секции CDATA.
void startDTD(String name, String publicId, String systemId)
Сообщает о начале объявлений DTD, если они есть.
void startEntity(String name)
Сообщает о начале некоторых внутренних и внешних XML-сущностей.

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

startDTD

void startDTD(String name, String publicId, String systemId) throws SAXException
Сообщает о начале объявлений DTD, если они есть.

Этот метод предназначен для сообщения о начале объявления DOCTYPE; если в документе нет объявления DOCTYPE, этот метод вызван не будет.

Все объявления, о которых сообщают события DTDHandler или DeclHandler, должны находиться между событиями startDTD и endDTD. Предполагается, что объявления относятся к внутреннему подмножеству DTD, если только они не находятся между событиями startEntity и endEntity. Комментарии и инструкции обработки из DTD также должны сообщаться между событиями startDTD и endDTD в исходном порядке их (логического) появления; однако они не обязаны находиться в правильных позициях относительно событий DTDHandler или DeclHandler.

Обратите внимание, что события start/endDTD будут происходить внутри событий start/endDocument обработчика ContentHandler и перед первым событием startElement.

Параметры:
name — Имя типа документа.
publicId — Объявленный публичный идентификатор внешнего подмножества DTD или null, если он не был объявлен.
systemId — Объявленный системный идентификатор внешнего подмножества DTD или null, если он не был объявлен. (Обратите внимание, что он не разрешается относительно базового URI документа.)
Выбрасывает:
SAXException — Приложение может вызвать исключение.
См. также:
  • endDTD()
  • startEntity(String)

endDTD

void endDTD() throws SAXException
Сообщает о завершении объявлений DTD.

Этот метод предназначен для сообщения о завершении объявления DOCTYPE; если в документе нет объявления DOCTYPE, этот метод вызван не будет.

Выбрасывает:
SAXException — Приложение может вызвать исключение.
См. также:
  • startDTD(String, String, String)

startEntity

void startEntity(String name) throws SAXException
Сообщает о начале некоторых внутренних и внешних XML-сущностей.

Сообщение о параметрических сущностях (включая внешнее подмножество DTD) является необязательным, и драйверы SAX2, сообщающие о событиях LexicalHandler, могут не реализовывать эту возможность; для запроса или управления сообщением о параметрических сущностях можно использовать функцию http://xml.org/sax/features/lexical-handler/parameter-entities.

Об общих сущностях сообщается с использованием их обычных имён, к именам параметрических сущностей добавляется префикс '%', а для внешнего подмножества DTD используется псевдоимя сущности "[dtd]".

Если драйвер SAX2 предоставляет эти события, все остальные события должны быть правильно вложены в события start/end entity. Дополнительных требований к правильному порядку событий DeclHandler или DTDHandler нет.

Обратите внимание, что о пропущенных сущностях сообщается через событие skippedEntity, входящее в интерфейс ContentHandler.

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

  • общие сущности в значениях атрибутов
  • параметрические сущности в объявлениях

Они будут раскрыты без уведомления и без указания исходных границ сущностей.

Также обратите внимание, что о границах символьных ссылок (которые, строго говоря, не являются сущностями) не сообщается.

Все события start/endEntity должны быть правильно вложены.

Параметры:
name — Имя сущности. Если это параметрическая сущность, имя будет начинаться с '%', а если это внешнее подмножество DTD, оно будет иметь значение "[dtd]".
Выбрасывает:
SAXException — Приложение может вызвать исключение.
См. также:
  • endEntity(String)
  • DeclHandler.internalEntityDecl(String, String)
  • DeclHandler.externalEntityDecl(String, String, String)

endEntity

void endEntity(String name) throws SAXException
Сообщает о завершении сущности.
Параметры:
name — Имя завершающейся сущности.
Выбрасывает:
SAXException — Приложение может вызвать исключение.
См. также:
  • startEntity(String)

startCDATA

void startCDATA() throws SAXException
Сообщает о начале секции CDATA.

Содержимое секции CDATA будет передано через обычное событие characters; это событие предназначено только для сообщения о границе секции.

Выбрасывает:
SAXException — Приложение может вызвать исключение.
См. также:
  • endCDATA()

endCDATA

void endCDATA() throws SAXException
Сообщает о завершении секции CDATA.
Выбрасывает:
SAXException — Приложение может вызвать исключение.
См. также:
  • startCDATA()

comment

void comment(char[] ch, int start, int length) throws SAXException
Сообщает о комментарии XML в любом месте документа.

Этот обратный вызов используется для комментариев внутри и вне элемента документа, включая комментарии во внешнем подмножестве DTD (если оно считывается). Комментарии в DTD должны быть правильно вложены в события start/endDTD и start/endEntity (если используются).

Параметры:
ch — Массив, содержащий символы комментария.
start — Начальная позиция в массиве.
length — Количество символов, используемых из массива.
Выбрасывает:
SAXException — Приложение может вызвать исключение.

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

Spec-Zone.ru

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