Описание класса 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]
Уничтожает обработчик.
|