Spec-Zone .ru
спецификации, руководства, описания, API
След: API Java для XML, Обрабатывающего (JAXP)
Урок: Введение в JAXP
Простой API для API XML
Домашняя страница > API Java для XML, Обрабатывающего (JAXP) > Введение в JAXP

Простой API для API XML

Основную схему API парсинга SAX показывают в  рисунке 1-1. Чтобы запустить процесс, экземпляр SAXParserFactory, class используется, чтобы генерировать экземпляр синтаксического анализатора.

 API SAX рисунка 1-1

API SAX

Синтаксический анализатор обертывает объект SAXReader. Когда метод parse() синтаксического анализатора вызывается, читатель вызывает один из нескольких методов обратного вызова, реализованных в приложении. Те методы определяются интерфейсами ContentHandler, ErrorHandler, DTDHandler, и EntityResolver.

Вот сводка ключевых API SAX:

SAXParserFactory

Объект SAXParserFactory создает экземпляр синтаксического анализатора, определенного системным свойством, javax.xml.parsers.SAXParserFactory.

SAXParser

Интерфейс SAXParser определяет несколько видов методов parse(). Вообще, Вы передаете источник данных XML и объект DefaultHandler к синтаксическому анализатору, который обрабатывает XML и вызывает соответствующие методы в объекте-обработчике.

SAXReader

SAXParser обертывает SAXReader. Как правило, Вы не заботитесь об этом, но время от времени Вы должны овладеть этим использующий getXMLReader() SAXParser так, чтобы можно было сконфигурировать это. Это - SAXReader, который продолжает разговор с обработчиками событий SAX, которые Вы определяете.

DefaultHandler

Не показанный в схеме, DefaultHandler реализует ContentHandler, ErrorHandler, DTDHandler, и интерфейсы EntityResolver (с нулевыми методами), таким образом, можно переопределить только тех, Вы интересуетесь.

ContentHandler

Методы, такие как startDocument, endDocument, startElement, и endElement вызываются, когда XML-тэг распознается. Этот интерфейс также определяет методы characters() и processingInstruction(), которые вызываются, когда синтаксический анализатор встречается с текстом в элементе XML или встроенной инструкции обработки, соответственно.

ErrorHandler

Методы error(), fatalError(), и warning() вызываются в ответ на различные ошибки парсинга. Обработчик ошибок значения по умолчанию выдает исключение для фатальных ошибок и игнорирует другие ошибки (включая ошибки проверки допустимости). Это - одна причина, Вы должны знать что-то о синтаксическом анализаторе SAX, даже если Вы используете ДОМА. Иногда, приложение может быть в состоянии восстановиться с ошибки проверки допустимости. Другие времена, это, возможно, должно генерировать исключение. Чтобы гарантировать корректную обработку, Вы должны будете предоставить свой собственный обработчик ошибок к синтаксическому анализатору.

DTDHandler

Определяет методы, которые Вы никогда не будете обычно призываться, чтобы использовать. Используемый, обрабатывая DTD, чтобы распознать и действовать на объявления для непроанализированного объекта.

EntityResolver

Метод resolveEntity вызывается, когда синтаксический анализатор должен идентифицировать данные, идентифицированные URI. В большинстве случаев URI является просто URL, который определяет расположение документа, но в некоторых случаях документ может быть идентифицирован УРНОЙ - общедоступный идентификатор, или имя, которое уникально в интернет-пространстве. Общедоступный идентификатор может быть определен в дополнение к URL. EntityResolver может тогда использовать общедоступный идентификатор вместо URL, чтобы найти документ например, получить доступ к локальной копии документа, если Вы существуете.

Типичное приложение реализует большинство методов ContentHandler, как минимум. Поскольку реализации по умолчанию интерфейсов игнорируют все вводы за исключением фатальных ошибок, устойчивая реализация может также хотеть реализовать методы ErrorHandler.

Пакеты SAX

Синтаксический анализатор SAX определяется в пакетах, перечисленных в следующей Таблице .

Табличные Пакеты SAX

Пакеты

Описание

org.xml.sax

Определяет интерфейсы SAX. org.xml имени является префиксом пакета, который был обоснован группой, которая определила API SAX.

org.xml.sax.ext

Определяет расширения SAX, которые используются для того, чтобы сделать более сложную обработку например SAX, обработать определение типа документа (DTD) или видеть подробный синтаксис для файла.

org.xml.sax.helpers

Содержит классы помощника, которые облегчают использовать SAX например, определяя обработчик значения по умолчанию, у которого есть нулевые методы для всех интерфейсов, так, чтобы Вы только переопределили тех, Вы фактически хотите реализовать.

javax.xml.parsers

Определяет SAXParserFactory class, который возвращает SAXParser. Также определяет классы исключений для того, чтобы сообщить об ошибках.


Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Краткий обзор Пакетов
Следующая страница: API Объектной модели документа