Интерфейс 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 при попытке регистрации обработчика.
- С:
- 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.