Класс DefaultHandler2
- Все реализованные интерфейсы:
-
ContentHandler,DTDHandler,EntityResolver,ErrorHandler,DeclHandler,EntityResolver2,LexicalHandler
public class DefaultHandler2 extends DefaultHandler implements LexicalHandler, DeclHandler, EntityResolver2
LexicalHandler, DeclHandler и EntityResolver2. За исключением переопределения исходного метода SAX1 resolveEntity(), добавленные методы обработчика просто возвращают значение. Подклассы могут переопределять все методы по отдельности. Примечание: этот класс может еще узнать, что вызов ContentHandler.setDocumentLocator() может получить объект Locator2, а вызов ContentHandler.startElement() может получить объект Attributes2.
- С тех пор:
- 1.5, SAX 2.0 (extensions 1.1 alpha)
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
DefaultHandler2() |
Создаёт обработчик, игнорирующий все события разбора. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
attributeDecl |
Сообщает о объявлении типа атрибута. |
void |
comment |
Сообщает об XML-комментарии в любом месте документа. |
void |
elementDecl |
Сообщает об объявлении типа элемента. |
void |
endCDATA() |
Сообщает об окончании раздела CDATA. |
void |
endDTD() |
Сообщает об окончании объявлений DTD. |
void |
endEntity |
Сообщает об окончании сущности. |
void |
externalEntityDecl |
Сообщает об объявлении внешней сущности, проанализированной извне. |
InputSource |
getExternalSubset |
Сообщает анализатору, что если во внешнем подмножестве документа не было объявлено ничего, то оно не должно использоваться. |
void |
internalEntityDecl |
Сообщает об объявлении внутренней сущности. |
InputSource |
resolveEntity |
Вызывает EntityResolver2.resolveEntity() с именем сущности null и базовым URI. |
InputSource |
resolveEntity |
Сообщает анализатору разрешить systemId относительно baseURI и прочитать текст сущности из полученного абсолютного URI. |
void |
startCDATA() |
Сообщает о начале раздела CDATA. |
void |
startDTD |
Сообщает о начале объявлений DTD, если они есть. |
void |
startEntity |
Сообщает о начале некоторых внутренних и внешних XML-сущностей. |
Методы, унаследованные от класса org.xml.sax.helpers.DefaultHandler
characters, endDocument, endElement, endPrefixMapping, error, fatalError, ignorableWhitespace, notationDecl, processingInstruction, setDocumentLocator, skippedEntity, startDocument, startElement, startPrefixMapping, unparsedEntityDecl, warning
Методы, унаследованные от класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Методы, унаследованные от интерфейса org.xml.sax.ContentHandler
declaration
Подробное описание конструкторов
DefaultHandler2
public DefaultHandler2()
Подробное описание методов
startCDATA
public void startCDATA() throws SAXException
LexicalHandlerСодержимое раздела CDATA будет сообщено через стандартное событие characters; это событие предназначено только для сообщения о границе.
- Указано в:
-
startCDATAв интерфейсеLexicalHandler - Выбрасывает:
-
SAXException- Приложение может вызвать исключение. - См. также:
endCDATA
public void endCDATA() throws SAXException
LexicalHandler- Указано в:
-
endCDATAв интерфейсеLexicalHandler - Выбрасывает:
-
SAXException- Приложение может вызвать исключение. - См. также:
startDTD
public void startDTD(String name, String publicId, String systemId) throws SAXException
LexicalHandlerЭтот метод предназначен для сообщения о начале объявления DOCTYPE; если в документе нет объявления DOCTYPE, этот метод не будет вызван.
Все объявления, сообщённые через DTDHandler или DeclHandler события, должны появляться между событиями startDTD и endDTD. Объявления предполагаются принадлежащими внутреннему подмножеству DTD, если они не появляются между событиями startEntity и endEntity. Комментарии и управляющие инструкции из DTD также должны быть сообщены между событиями startDTD и endDTD в их первоначальном порядке (логического) возникновения; однако они не обязаны появляться в своих корректных местах относительно событий DTDHandler или DeclHandler.
Обратите внимание, что события start/endDTD появятся внутри событий start/endDocument от ContentHandler и перед первым startElement событием.
- Указано в:
-
startDTDв интерфейсеLexicalHandler - Параметры:
-
name- Имя типа документа. -
publicId- Объявленный общедоступный идентификатор внешнего подмножества DTD или null, если он не был объявлен. -
systemId- Объявленный системный идентификатор внешнего подмножества DTD или null, если он не был объявлен. (Обратите внимание, что это не разрешается относительно URI базы документа.) - Выбрасывает:
-
SAXException- Приложение может вызвать исключение. - См. также:
endDTD
public void endDTD() throws SAXException
LexicalHandlerЭтот метод предназначен для сообщения об окончании объявления DOCTYPE; если в документе нет объявления DOCTYPE, этот метод не будет вызван.
- Указано в:
-
endDTDв интерфейсеLexicalHandler - Выбрасывает:
-
SAXException- Приложение может вызвать исключение. - См. также:
startEntity
public void startEntity(String name) throws SAXException
LexicalHandlerСообщения о параметрических сущностях (включая внешнее подмножество 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 должны быть должным образом вложены.
- Указано в:
-
startEntityв интерфейсеLexicalHandler - Параметры:
-
name- Имя сущности. Если это параметрическая сущность, имя будет начинаться с '%', а если это внешнее подмножество DTD, то оно будет "[dtd]". - Выбрасывает:
-
SAXException- Приложение может вызвать исключение. - См. также:
endEntity
public void endEntity(String name) throws SAXException
LexicalHandler- Указано в:
-
endEntityв интерфейсеLexicalHandler - Параметры:
-
name- Имя сущности, которая завершается. - Выбрасывает:
-
SAXException- Приложение может вызвать исключение. - См. также:
comment
public void comment(char[] ch, int start, int length) throws SAXException
LexicalHandlerЭтот обратный вызов будет использоваться для комментариев внутри или вне элемента документа, включая комментарии во внешнем подмножестве DTD (если оно читается). Комментарии в DTD должны быть правильно вложены внутри событий start/endDTD и start/endEntity (если используются).
- Указано в:
-
commentв интерфейсеLexicalHandler - Параметры:
-
ch- Массив, содержащий символы в комментарии. -
start- Начальная позиция в массиве. -
length- Количество символов для использования из массива. - Выбрасывает:
-
SAXException- Приложение может вызвать исключение.
attributeDecl
public void attributeDecl(String eName, String aName, String type, String mode, String value) throws SAXException
DeclHandlerБудет сообщено только эффективное (первое) объявление для атрибута. Тип будет одним из строк "CDATA", "ID", "IDREF", "IDREFS", "NMTOKEN", "NMTOKENS", "ENTITY", "ENTITIES", группой токенов в скобках с разделителем "|" и удалённым всем пробелом, или словом "NOTATION", за которым следует пробел, за которым следует группа токенов в скобках со всем пробелом удалённым.
Значение будет значением, как сообщено приложениям, должным образом нормализованным и с расширенными ссылками на сущности и символы.
- Указано в:
-
attributeDeclв интерфейсеDeclHandler - Параметры:
-
eName- Имя связанного элемента. -
aName- Имя атрибута. -
type- Строка, представляющая тип атрибута. -
mode- Строка, представляющая режим настройки атрибута ("#IMPLIED", "#REQUIRED" или "#FIXED") или null, если ни одно из этих не применяется. -
value- Строка, представляющая значение по умолчанию атрибута или null, если такового нет. - Выбрасывает:
-
SAXException- Приложение может вызвать исключение.
elementDecl
public void elementDecl(String name, String model) throws SAXException
DeclHandlerМодель содержимого будет состоять из строки "EMPTY", строки "ANY" или скобочной группы, за которой необязательно следует указатель повторений. Модель будет нормализована таким образом, что все сущности параметров будут полностью разрешены, а все пробелы будут удалены, и она будет включать в себя окружающие скобки. Другая нормализация (такая как удаление избыточных скобок или упрощение указателей повторений) находится на усмотрение парсера.
- Определено в:
-
elementDeclв интерфейсеDeclHandler - Параметры:
-
name- Имя типа элемента. -
model- Модель содержимого в виде нормализованной строки. - Исключение:
-
SAXException- Приложение может выбросить исключение.
externalEntityDecl
public void externalEntityDecl(String name, String publicId, String systemId) throws SAXException
DeclHandlerБудет сообщено только эффективное (первое) объявление для каждой сущности.
Если идентификатор системы является URL, парсер должен полностью разрешить его, прежде чем передавать его приложению.
- Определено в:
-
externalEntityDeclв интерфейсеDeclHandler - Параметры:
-
name- Имя сущности. Если это сущность параметра, имя будет начинаться с '%'. -
publicId- Публичный идентификатор сущности или null, если он не был задан. -
systemId- Системный идентификатор сущности. - Исключение:
-
SAXException- Приложение может выбросить исключение. - См. также:
internalEntityDecl
public void internalEntityDecl(String name, String value) throws SAXException
DeclHandlerБудет сообщено только эффективное (первое) объявление для каждой сущности. Все сущности параметров в значении будут расширены, но общие сущности не будут.
- Определено в:
-
internalEntityDeclв интерфейсеDeclHandler - Параметры:
-
name- Имя сущности. Если это сущность параметра, имя будет начинаться с '%'. -
value- Текст замены сущности. - Исключение:
-
SAXException- Приложение может выбросить исключение. - См. также:
getExternalSubset
public InputSource getExternalSubset(String name, String baseURI) throws SAXException, IOException
- Определено в:
-
getExternalSubsetв интерфейсеEntityResolver2 - Параметры:
-
name- Идентифицирует корневой элемент документа. Это имя взято из декларации DOCTYPE (если она есть) или из фактического корневого элемента. -
baseURI- Базовый URI документа, служащий дополнительным указанием для выбора внешней подгруппы. Это всегда абсолютный URI, если он не равен null, потому что XMLReader получил InputSource без него. - Возвращает:
- Объект InputSource, описывающий новую внешнюю подгруппу, которая будет использоваться парсером, или null, чтобы указать, что внешняя подгруппа не предоставлена.
- Исключение:
-
SAXException- Любое исключение SAX, возможно, обертывающее другое исключение. -
IOException- Вероятно, указывает на неудачу при создании нового потока ввода или читателя или некорректный URL.
resolveEntity
public InputSource resolveEntity(String name, String publicId, String baseURI, String systemId) throws SAXException, IOException
DefaultHandler.resolveEntity() переопределен для вызова этого метода, этот метод иногда может вызываться с null name и baseURI и с systemId, уже приведенным к абсолютному виду.- Определено в:
-
resolveEntityв интерфейсеEntityResolver2 - Параметры:
-
name- Идентифицирует внешнюю сущность, которая решается. Либо "[dtd]" для внешней подгруппы, или имя, начинающееся с '%', чтобы указать сущность параметра, или же имя общей сущности. Это никогда не равно null при вызове SAX2-парсером. -
publicId- Публичный идентификатор внешней сущности, на которую ссылаются (нормализованный, как требуется спецификацией XML), или null, если он не был предоставлен. -
baseURI- URI относительно которого интерпретируются относительные systemID. Это всегда абсолютный URI, если он не равен null (вероятно, потому что XMLReader получил InputSource без него). Этот URI определен спецификацией XML как связанный с "<" в начале соответствующей декларации. -
systemId- Системный идентификатор внешней сущности, на которую ссылаются; относительный или абсолютный URI. Это никогда не равно null при вызове SAX2-парсером; только объявленные сущности и любая внешняя подгруппа решаются такими парсерами. - Возвращает:
- Объект InputSource, описывающий новый источник ввода, который должен быть использован парсером. Возвращение null направляет парсер к разрешению systemID относительно baseURI и открытию подключения к результирующему URI.
- Исключение:
-
SAXException- Любое исключение SAX, возможно, обертывающее другое исключение. -
IOException- Вероятно, указывает на неудачу при создании нового потока ввода или читателя или некорректный URL.
resolveEntity
public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException
EntityResolver2.resolveEntity() с null именем сущности и base URI. Вам нужно переопределить только этот метод, чтобы использовать этот класс.- Определено в:
-
resolveEntityв интерфейсеEntityResolver - Переопределяет:
-
resolveEntityв классеDefaultHandler - Параметры:
-
publicId- Публичный идентификатор или null, если он недоступен. -
systemId- Системный идентификатор, предоставленный в XML-документе. - Возвращает:
- Новый источник ввода или null для требования стандартного поведения.
- Исключение:
-
SAXException- Любое исключение SAX, возможно, обертывающее другое исключение. -
IOException- Если есть ошибка при настройке нового источника ввода. - См. также:
© 1993, 2021, 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/17/docs/api/java.xml/org/xml/sax/ext/DefaultHandler2.html