Интерфейс LexicalHandler

Все известные подинтерфейсы:
TransformerHandler
Все известные реализующие классы:
DefaultHandler2
public interface LexicalHandler

Обработчик расширения SAX2 для лексических событий.

Этот модуль, как исходный код, так и документация, находится в общественном достоянии и не несет НИКАКОЙ ГАРАНТИИ. См. http://www.saxproject.org для получения дополнительной информации.

Это необязательный обработчик расширения для 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, 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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.xml/org/xml/sax/ext/LexicalHandler.html

Spec-Zone .ru
спецификации, руководства, описания, API