Класс QXmlContentHandler
Класс QXmlContentHandler предоставляет интерфейс для отчёта о логическом содержании данных XML. Подробнее...
| Заголовок: | #include <QXmlContentHandler> |
| qmake: | QT += xml |
| Наследуется от: |
Примечание: Все функции в этом классе являются реентерабельными.
Открытые функции
| virtual | ~QXmlContentHandler() |
| virtual bool | characters(const QString &ch) = 0 |
| virtual bool | endDocument() = 0 |
| virtual bool | endElement(const QString &namespaceURI, const QString &localName, const QString &qName) = 0 |
| virtual bool | endPrefixMapping(const QString &prefix) = 0 |
| virtual QString | errorString() const = 0 |
| virtual bool | ignorableWhitespace(const QString &ch) = 0 |
| virtual bool | processingInstruction(const QString &target, const QString &data) = 0 |
| virtual void | setDocumentLocator(QXmlLocator *locator) = 0 |
| virtual bool | skippedEntity(const QString &name) = 0 |
| virtual bool | startDocument() = 0 |
| virtual bool | startElement(const QString &namespaceURI, const QString &localName, const QString &qName, const QXmlAttributes &atts) = 0 |
| virtual bool | startPrefixMapping(const QString &prefix, const QString &uri) = 0 |
Подробное описание
Класс QXmlContentHandler предоставляет интерфейс для отчёта о логическом содержании данных XML.
Если приложению нужно получить информацию о базовых событиях парсинга, оно может реализовать этот интерфейс и активировать его с помощью QXmlReader::setContentHandler(). Тогда чтец может сообщать о базовых событиях, связанных с документом, таких как начало и конец элементов и данных символов, через этот интерфейс.
Порядок событий в этом интерфейсе очень важен и отражает порядок информации в самом документе. Например, всё содержимое элемента (символьные данные, инструкции обработки и подэлементы) появляется в порядке следования между событием startElement() и соответствующим событием endElement().
Класс QXmlDefaultHandler предоставляет стандартную реализацию этого интерфейса; наследование от класса QXmlDefaultHandler очень удобно, если вам нужно получать уведомления только о некоторых событиях парсинга.
Функция startDocument() вызывается в начале документа, а endDocument() — в конце. Перед началом парсинга вызывается setDocumentLocator(). Для каждого элемента вызывается startElement(), а endElement() — в конце каждого элемента. Функция characters() вызывается с фрагментами данных символов; ignorableWhitespace() вызывается с фрагментами пробелов, а processingInstruction() — с инструкциями обработки. Если сущность пропущена, вызывается skippedEntity(). В начале областей префикс-URI вызывается startPrefixMapping().
См. также QXmlDTDHandler, QXmlDeclHandler, QXmlEntityResolver, QXmlErrorHandler, QXmlLexicalHandler и Введение в SAX2.
Документация по функциям-членам
[virtual] QXmlContentHandler::~QXmlContentHandler()
Уничтожает обработчик содержимого.
[pure virtual] bool QXmlContentHandler::characters(const QString &ch)
Чтец вызывает эту функцию, когда он проанализировал фрагмент символьных данных (обычные символьные данные или символьные данные внутри раздела CDATA; если вам нужно различать эти два типа, вы должны использовать QXmlLexicalHandler::startCDATA() и QXmlLexicalHandler::endCDATA()). Символьные данные передаются в ch.
Некоторые читатели могут использовать функцию ignorableWhitespace() для отчёта о пробелах в содержимом элемента, а не эту.
Чтец может передать символьные данные элемента более чем в одном фрагменте; например, чтец может передать "a<b" в трёх событиях characters() ("a ", "<" и " b").
Если эта функция возвращает false, чтец останавливает парсинг и сообщает об ошибке. Чтец использует функцию errorString() для получения сообщения об ошибке.
[pure virtual] bool QXmlContentHandler::endDocument()
Чтец вызывает эту функцию после завершения парсинга. Она вызывается один раз и является последней вызываемой функцией обработчика. Она вызывается после того, как чтец прочитал весь ввод или прекратил парсинг из-за критической ошибки.
Если эта функция возвращает false, чтец останавливает парсинг и сообщает об ошибке. Чтец использует функцию errorString() для получения сообщения об ошибке.
См. также startDocument().
[pure virtual] bool QXmlContentHandler::endElement(const QString &namespaceURI, const QString &localName, const QString &qName)
Чтец вызывает эту функцию, когда он проанализировал закрывающий тег элемента с квалифицированным именем qName, локальным именем localName и URI пространства имён namespaceURI.
Если эта функция возвращает false, чтец останавливает парсинг и сообщает об ошибке. Чтец использует функцию errorString() для получения сообщения об ошибке.
См. также startElement() и Поддержка пространств имён через функции.
[pure virtual] bool QXmlContentHandler::endPrefixMapping(const QString &prefix)
Чтец вызывает эту функцию, чтобы сигнализировать о завершении сопоставления префиксов для префикса prefix.
Если эта функция возвращает false, чтец останавливает парсинг и сообщает об ошибке. Чтец использует функцию errorString() для получения сообщения об ошибке.
См. также startPrefixMapping() и Поддержка пространств имён через функции.
[pure virtual] QString QXmlContentHandler::errorString() const
Чтец вызывает эту функцию для получения сообщения об ошибке, например, если любая из функций обработчика возвращает false.
[pure virtual] bool QXmlContentHandler::ignorableWhitespace(const QString &ch)
Некоторые читатели могут использовать эту функцию для отчёта о каждом фрагменте пробелов в содержимом элемента. Пробелы передаются в ch.
Если эта функция возвращает false, чтец останавливает парсинг и сообщает об ошибке. Чтец использует функцию errorString() для получения сообщения об ошибке.
[pure virtual] bool QXmlContentHandler::processingInstruction(const QString &target, const QString &data)
Чтец вызывает эту функцию при анализе инструкции обработки.
END_OF_DOCUMENT_MARKERtarget — имя инструкции обработки, а data — данные в инструкции обработки.
Если эта функция возвращает false, то читатель прекращает разбор и сообщает об ошибке. Читатель использует функцию errorString() для получения сообщения об ошибке.
[pure virtual] void QXmlContentHandler::setDocumentLocator(QXmlLocator *locator)
Читатель вызывает эту функцию перед началом разбора документа. Аргумент locator — указатель на QXmlLocator, который позволяет приложению получить позицию разбора в документе.
Не уничтожайте locator; он уничтожается при уничтожении читателя. (Не используйте locator после уничтожения читателя).
[pure virtual] bool QXmlContentHandler::skippedEntity(const QString &name)
Некоторые читатели могут пропускать сущности, если они не видели их объявления (например, потому что они находятся во внешнем DTD). В этом случае они сообщают о пропуске сущности с именем name, вызывая эту функцию.
Если эта функция возвращает false, то читатель прекращает разбор и сообщает об ошибке. Читатель использует функцию errorString() для получения сообщения об ошибке.
[pure virtual] bool QXmlContentHandler::startDocument()
Читатель вызывает эту функцию при начале разбора документа. Читатель вызывает эту функцию только один раз после вызова setDocumentLocator() и перед вызовом любых других функций в этом классе или в классе QXmlDTDHandler.
Если эта функция возвращает false, то читатель прекращает разбор и сообщает об ошибке. Читатель использует функцию errorString() для получения сообщения об ошибке.
См. также endDocument().
[pure virtual] bool QXmlContentHandler::startElement(const QString &namespaceURI, const QString &localName, const QString &qName, const QXmlAttributes &atts)
Читатель вызывает эту функцию, когда им был проанализирован открывающий тег элемента.
Существует соответствующий вызов endElement() при чтении соответствующего закрывающего тега элемента. Вызовы startElement() и endElement() всегда правильно вложены. Пустые теги элементов (например, <x/>) вызывают вызов startElement() сразу после вызова endElement().
Список атрибутов содержит только атрибуты с явными значениями. Список атрибутов содержит атрибуты, используемые для объявления пространства имен (т. е. атрибуты, начинающиеся с xmlns), только если свойство префикса пространства имен читателя равно true.
Аргумент namespaceURI — URI пространства имён или пустая строка, если у элемента нет URI пространства имён или если обработка пространства имён не выполняется. localName — локальное имя (без префикса) или пустая строка, если обработка пространства имён не выполняется, qName — квалифицированное имя (с префиксом), а atts — атрибуты, прикреплённые к элементу. Если атрибутов нет, atts — пустой объект атрибутов.
Если эта функция возвращает false, то читатель прекращает разбор и сообщает об ошибке. Читатель использует функцию errorString() для получения сообщения об ошибке.
См. также endElement() и Обработка пространств имён через функции.
[pure virtual] bool QXmlContentHandler::startPrefixMapping(const QString &prefix, const QString &uri)
Читатель вызывает эту функцию, чтобы указать начало области сопоставления префикса-URI пространства имён. Эта информация не нужна для обычной обработки пространства имён, так как читатель автоматически заменяет префиксы для имён элементов и атрибутов.
Обратите внимание, что вызовы startPrefixMapping() и endPrefixMapping() не гарантированно правильно вложены друг относительно друга: все события startPrefixMapping() происходят перед соответствующим событием startElement(), а все события endPrefixMapping() происходят после соответствующего события endElement(), но их порядок в ином случае не гарантирован.
Аргумент prefix — префикс пространства имён, объявляемый, а аргумент uri — URI пространства имён, которому сопоставляется префикс.
Если эта функция возвращает false, то читатель прекращает разбор и сообщает об ошибке. Читатель использует функцию errorString() для получения сообщения об ошибке.
См. также endPrefixMapping() и Обработка пространств имён через функции.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/qxmlcontenthandler.html