Класс DefaultHandler2
- java.lang.Object
-
- org.xml.sax.helpers.DefaultHandler
-
- org.xml.sax.ext.DefaultHandler2
- Все реализованные интерфейсы:
- ContentHandler, DTDHandler, EntityResolver, ErrorHandler, DeclHandler, EntityResolver2, LexicalHandler
public class DefaultHandler2 extends DefaultHandler implements LexicalHandler, DeclHandler, EntityResolver2
Этот класс расширяет базовый класс обработчика SAX2 для поддержки расширений SAX2 LexicalHandler, DeclHandler и EntityResolver2. За исключением переопределения оригинального метода SAX1 resolveEntity(), добавленные методы обработчика просто возвращают значение. Подклассы могут переопределять каждый метод по отдельности.
Этот модуль, как исходный код, так и документация, находится в общественном достоянии и не несёт ГАРАНТИЙ.
Примечание: этот класс может ещё научиться тому, что вызов ContentHandler.setDocumentLocator() может принимать объект Locator2, а вызов ContentHandler.startElement() может принимать объект Attributes2.
- С тех пор:
- SAX 2.0 (расширения 1.1 alpha)
Конструкторы
| Конструктор и описание |
|---|
DefaultHandler2() Создаёт обработчик, игнорирующий все события парсинга. |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
void |
attributeDecl(String eName,
String aName,
String type,
String mode,
String value) Отчёт об объявлении типа атрибута. |
void |
comment(char[] ch,
int start,
int length) Отчёт об XML-комментарии в любом месте документа. |
void |
elementDecl(String name,
String model) Отчёт об объявлении типа элемента. |
void |
endCDATA() Отчёт о завершении раздела CDATA. |
void |
endDTD() Отчёт о завершении объявлений DTD. |
void |
endEntity(String name) Отчёт о завершении сущности. |
void |
externalEntityDecl(String name,
String publicId,
String systemId) Отчёт об объявлении внешней сущности, проанализированной. |
InputSource |
getExternalSubset(String name,
String baseURI) Сообщает парсеру, что если во входном тексте не было объявлено внешний подмножество, то его не следует использовать. |
void |
internalEntityDecl(String name,
String value) Отчёт об объявлении внутренней сущности. |
InputSource |
resolveEntity(String publicId,
String systemId) Вызывает |
InputSource |
resolveEntity(String name,
String publicId,
String baseURI,
String systemId) Сообщает парсеру разрешить systemId относительно baseURI и считать текст сущности из полученного абсолютного URI. |
void |
startCDATA() Отчёт о начале раздела CDATA. |
void |
startDTD(String name,
String publicId,
String systemId) Отчёт о начале объявлений DTD, если таковые имеются. |
void |
startEntity(String name) Отчёт о начале некоторых внутренних и внешних 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 Конструкторы
DefaultHandler2
public DefaultHandler2()
Создаёт обработчик, игнорирующий все события разбора.
Методы
startCDATA
public void startCDATA()
throws SAXException Описание скопировано из интерфейса: LexicalHandler
Сообщает о начале раздела CDATA.
Содержимое раздела CDATA будет сообщено через обычное событие characters; это событие предназначено только для сообщения о границе.
- Определено в:
-
startCDATAв интерфейсеLexicalHandler - Исключение:
-
SAXException- Приложение может вызвать исключение. - См. также:
LexicalHandler.endCDATA()
endCDATA
public void endCDATA()
throws SAXException Описание скопировано из интерфейса: LexicalHandler
Сообщает о конце раздела CDATA.
- Определено в:
-
endCDATAв интерфейсеLexicalHandler - Исключение:
-
SAXException- Приложение может вызвать исключение. - См. также:
LexicalHandler.startCDATA()
startDTD
public void startDTD(String name,
String publicId,
String systemId)
throws SAXException Описание скопировано из интерфейса: LexicalHandler
Сообщает о начале объявлений DTD, если они есть.
Этот метод предназначен для сообщения о начале объявления 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- Приложение может вызвать исключение. - См. также:
-
LexicalHandler.endDTD(),LexicalHandler.startEntity(java.lang.String)
endDTD
public void endDTD()
throws SAXException Описание скопировано из интерфейса: LexicalHandler
Сообщает об окончании объявлений DTD.
Этот метод предназначен для сообщения об окончании объявления DOCTYPE; если в документе нет объявления DOCTYPE, этот метод не будет вызван.
- Определено в:
-
endDTDв интерфейсеLexicalHandler - Исключение:
-
SAXException- Приложение может вызвать исключение. - См. также:
LexicalHandler.startDTD(java.lang.String, java.lang.String, java.lang.String)
startEntity
public void startEntity(String name)
throws SAXException Описание скопировано из интерфейса: LexicalHandler
Сообщает о начале некоторых внутренних и внешних XML сущностей.
Сообщения о параметрических сущностях (включая внешнее подмножество DTD) необязательны, и драйверы SAX2, которые сообщают события LexicalHandler, могут их не реализовывать; вы можете использовать функцию http://xml.org/sax/features/lexical-handler/parameter-entities для запроса или управления сообщением о параметрических сущностях.
Общие сущности сообщаются с их обычными именами, параметрические сущности имеют символ '%' перед своими именами, а внешнее подмножество DTD имеет псевдо-имя "[dtd]".
Когда драйвер SAX2 предоставляет эти события, все остальные события должны быть правильно вложены в события начала/окончания сущности. Нет дополнительного требования, чтобы события от DeclHandler или DTDHandler были правильно упорядочены.
Обратите внимание, что пропущенные сущности будут сообщены через событие skippedEntity, которое является частью интерфейса ContentHandler.
Из-за потоковой модели событий, которую использует SAX, некоторые границы сущностей не могут быть сообщены при каких-либо обстоятельствах:
- общие сущности внутри значений атрибутов
- параметрические сущности внутри объявлений
Они будут молча расширены, без каких-либо указаний о том, где находились исходные границы сущности.
Также обратите внимание, что границы ссылок символов (которые вообще не являются сущностями) не сообщаются.
Все события начала/окончания сущности должны быть правильно вложены.
- Определено в:
-
startEntityв интерфейсеLexicalHandler - Параметры:
-
name- Имя сущности. Если это параметрическая сущность, имя будет начинаться с '%', а если это внешнее подмножество DTD, то это будет "[dtd]". - Исключение:
-
SAXException- Приложение может вызвать исключение. - См. также:
-
LexicalHandler.endEntity(java.lang.String),DeclHandler.internalEntityDecl(java.lang.String, java.lang.String),DeclHandler.externalEntityDecl(java.lang.String, java.lang.String, java.lang.String)
endEntity
public void endEntity(String name)
throws SAXException Описание скопировано из интерфейса: LexicalHandler
Сообщает об окончании сущности.
- Определено в:
-
endEntityв интерфейсеLexicalHandler - Параметры:
-
name- Имя сущности, которая завершается. - Исключение:
-
SAXException- Приложение может вызвать исключение. - См. также:
LexicalHandler.startEntity(java.lang.String)
comment
public void comment(char[] ch,
int start,
int length)
throws SAXException Описание скопировано из интерфейса: LexicalHandler
Сообщает об XML-комментарии в любом месте документа.
Этот обратный вызов будет использоваться для комментариев внутри или вне элемента документа, включая комментарии во внешнем подмножестве 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- Приложение может вызвать исключение. - См. также:
-
DeclHandler.internalEntityDecl(java.lang.String, java.lang.String),DTDHandler.unparsedEntityDecl(java.lang.String, java.lang.String, java.lang.String, java.lang.String)
internalEntityDecl
public void internalEntityDecl(String name,
String value)
throws SAXException Описание скопировано из интерфейса: DeclHandler
Сообщить об объявлении внутренней сущности.
Будет сообщено только эффективное (первое) объявление для каждой сущности. Все параметрические сущности в значении будут расширены, но общие сущности — нет.
- Указано в:
-
internalEntityDeclв интерфейсеDeclHandler - Параметры:
-
name- Имя сущности. Если это параметр сущности, имя начинается с '%'. -
value- Текст замены сущности. - Исключения:
-
SAXException- Приложение может вызвать исключение. - См. также:
-
DeclHandler.externalEntityDecl(java.lang.String, java.lang.String, java.lang.String),DTDHandler.unparsedEntityDecl(java.lang.String, java.lang.String, java.lang.String, java.lang.String)
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- Вероятно, указывает на ошибку создания нового InputStream или Reader или неверный URL.
resolveEntity
public InputSource resolveEntity(String name,
String publicId,
String baseURI,
String systemId)
throws SAXException,
IOException Сообщает парсеру разрешить systemId относительно baseURI и прочитать текст сущности из полученного абсолютного URI. Обратите внимание, что из-за того, что более старая методика DefaultHandler.resolveEntity() переопределена для вызова данной, данный метод может иногда вызываться с null name и baseURI и с systemId, уже приведенным к абсолютному виду.
- Указано в:
-
resolveEntityв интерфейсеEntityResolver2 - Параметры:
-
name- Идентифицирует внешнюю сущность, которая разрешается. "[dtd]" для внешнего подмножества, или имя, начинающееся с '%', чтобы указать параметрическую сущность, или имя общей сущности. Никогда не равно null, когда вызывается SAX2-парсером. -
publicId- Общедоступный идентификатор внешней сущности, на которую делается ссылка (нормализован как требуется спецификацией XML), или null, если он не был предоставлен. -
baseURI- URI относительно которого интерпретируются относительные systemIDs. Это всегда абсолютный URI, если он не null (вероятно, потому что XMLReader получил InputSource без него). Этот URI определяется спецификацией XML как связанный с "<", начинающим соответствующее объявление. -
systemId- Системный идентификатор внешней сущности, на которую делается ссылка; относительный или абсолютный URI. Никогда не равно null, когда вызывается SAX2-парсером; только объявленные сущности и любое внешнее подмножество разрешаются такими парсерами. - Возвращает:
- Объект InputSource, описывающий новый источник ввода, который будет использоваться парсером. Возврат null направляет парсер разрешить system ID относительно base URI и открыть подключение к результирующему URI.
- Исключения:
-
SAXException- Любое исключение SAX, возможно, обертывающее другое исключение. -
IOException- Вероятно, указывает на ошибку создания нового InputStream или Reader или неверный 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- Java-специфическое исключение IO, возможно, результат создания нового InputStream или Reader для InputSource. - См. также:
EntityResolver.resolveEntity(java.lang.String, java.lang.String)
© 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.