Главная · Все классы · Основные классы · Классы по группам · Модули · Функции

Описание класса QXmlDefaultHandler
[модуль QtXml]

Класс QXmlDefaultHandler обеспечивает реализацию по умолчанию всех классов-обработчиков XML. Далее...

 #include <QXmlDefaultHandler>

Inherits QXmlContentHandler, QXmlErrorHandler, QXmlDTDHandler, QXmlEntityResolver, QXmlLexicalHandler, and QXmlDeclHandler.

Замечание: Все функции в этом классе реентерабельны.

Открытые функции


Подробное описание

Класс QXmlDefaultHandler обеспечивает реализацию по умолчанию всех классов-обработчиков XML.

Этот класс объединяет черты специализированных классов обработки, что делает его удобным отправным пунктом при реализации пользовательских обработчиков для подклассов QXmlReader, в частности, QXmlSimpleReader. Виртуальные функции каждого из базовых классов переопределены в этом классе, обеспечивая разумное поведение по умолчанию для многих случаев. Наследуя от этого класса и перегружая его функции, вы можете сконцентрироваться на изменении поведения тех частей обработчика, которые вам необходимы.

Читатель XML должен сообщать обработчику о событиях, которые случаются в процессе анализа. Это означает, что, хоть QXmlDefaultHandler и обеспечивает реализации по умолчанию для унаследованных от всех базовых классов функций, мы можем использовать специализированные обработчики для отдельных видов событий.

Например, QXmlDefaultHandler наследует от QXmlContentHandler и QXmlErrorHandler, и мы можем использовать одинаковые обработчики для обоих функций чтения:

     xmlReader.setContentHandler(handler);
     xmlReader.setErrorHandler(handler);

Поскольку читатель будет информировать обработчик об ошибках чтения, необходимо переопределить QXmlErrorHandler::fatalError(), если, например, мы хотим останавливать анализ при возникновении ошибок:

 bool Handler::fatalError (const QXmlParseException & exception)
 {
     qWarning() << "Fatal error on line" << exception.lineNumber()
                << ", column" << exception.columnNumber() << ":"
                << exception.message();

     return false;
 }

Функция выше возвращает false, что приводит к остановке анализа. Чтобы продолжать использовать тот же читатель, необходимо создать новый обработчик и установить читатель описанным выше способом.

Это полезно при изучении функций, унаследованных от QXmlDefaultHandler, а также при рассмотрении вопроса, почему они могут быть переопределены в пользовательском обработчике. Свои обработчики будут обычно переопределять QXmlContentHandler::startDocument() для подготовки обработчика к новому содержимому. Обработка элементов документа и текста в них может быть переопределена с помощью QXmlContentHandler::startElement(), QXmlContentHandler::endElement() и QXmlContentHandler::characters(). Вы можете захотеть переопределить QXmlContentHandler::endDocument() для совершения некоторых действий по завершению или для проверки содержимого после окончания чтения.

Смотрите также QXmlDTDHandler, QXmlDeclHandler, QXmlContentHandler, QXmlEntityResolver, QXmlErrorHandler, QXmlLexicalHandler и Введение в SAX2.


Описание функций-членов

QXmlDefaultHandler::QXmlDefaultHandler ()

Создаёт обработчик для использования в подклассах QXmlReader.

QXmlDefaultHandler::~QXmlDefaultHandler ()   [virtual]

Уничтожает обработчик.


Copyright © 2008 Trolltech Торговые марки
Qt 4.3.5