Spec-Zone.ru › OpenJDK 24

Интерфейс 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(java.lang.String)

endDTD

void endDTD() throws SAXException
Сообщить об окончании деклараций DTD.

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

Исключение:
SAXException - Приложение может вызвать исключение.
См. также:
  • startDTD(java.lang.String, java.lang.String, java.lang.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(java.lang.String)
  • DeclHandler.internalEntityDecl(java.lang.String, java.lang.String)
  • DeclHandler.externalEntityDecl(java.lang.String, java.lang.String, java.lang.String)

endEntity

void endEntity(String name) throws SAXException
Сообщить об окончании сущности.
Параметры:
name - Имя сущности, которая заканчивается.
Исключение:
SAXException - Приложение может вызвать исключение.
См. также:
  • startEntity(java.lang.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 - Приложение может вызвать исключение.

© 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://download.java.net/java/early_access/jdk24/docs/api/java.xml/org/xml/sax/ext/LexicalHandler.html

Spec-Zone.ru

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