Spec-Zone.ru › Qt 5.13

Класс QAbstractXmlReceiver

Класс QAbstractXmlReceiver предоставляет интерфейс обратного вызова для преобразования выходных данных QXmlQuery. Подробнее...

Заголовок: #include <QAbstractXmlReceiver>
qmake: QT += xmlpatterns
С момента: Qt 4.4
Наследуется от:

QXmlSerializer

Этот класс был представлен в Qt 4.4.

  • Список всех членов, включая унаследованные

Примечание: Все функции в этом классе являются повторно входящими.

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

QAbstractXmlReceiver()
virtual ~QAbstractXmlReceiver()
virtual void atomicValue(const QVariant &value) = 0
virtual void attribute(const QXmlName &name, const QStringRef &value) = 0
virtual void characters(const QStringRef &value) = 0
virtual void comment(const QString &value) = 0
virtual void endDocument() = 0
virtual void endElement() = 0
virtual void endOfSequence() = 0
virtual void namespaceBinding(const QXmlName &name) = 0
virtual void processingInstruction(const QXmlName &target, const QString &value) = 0
virtual void startDocument() = 0
virtual void startElement(const QXmlName &name) = 0
virtual void startOfSequence() = 0

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

QAbstractXmlReceiver — это абстрактный базовый класс, предоставляющий интерфейс обратного вызова для получения последовательности XQuery, обычно выходных данных QXmlQuery, и преобразования этой последовательности в структуру по вашему выбору, обычно XML. Рассмотрим пример:

QXmlQuery query;
query.setQuery("doc('index.html')/html/body/p[1]");

QXmlSerializer serializer(query, myOutputDevice);
query.evaluateTo(&serializer);

Сначала он строит запрос, который получает первый абзац из документа index.html. Затем он строит сериализатор XML с запросом и myOutputDevice (Обратите внимание, что сериализатор является приёмником XML, то есть подклассом QAbstractXmlReceiver). Наконец, он оценивает запрос, генерируя упорядоченную последовательность вызовов функций обратного вызова сериализатора. Последовательность обратных вызовов преобразует выходные данные запроса в XML и записывает их в myOutputDevice.

Хотя в примере используется QXmlQuery для создания последовательности обратных вызовов функций в QAbstractXmlReceiver, вы можете вызвать функции обратного вызова напрямую, если ваша последовательность вызовов представляет собой допустимую последовательность XQuery.

Последовательности XQuery

Последовательность XQuery — это упорядоченный набор из нуля, одного или нескольких элементов. Каждый элемент является либо атомным значением, либо узлом. Атомное значение — это простое значение данных.

Существует шесть типов узлов.

  • Узел элемента представляет собой элемент XML.
  • Узел атрибута представляет собой атрибут XML.
  • Узел документа представляет собой весь документ XML.
  • Узел текста представляет собой данные символов (содержимое элемента).
  • Узел инструкции обработки представляет собой инструкцию обработки XML, которая используется в документе XML, чтобы сообщить приложению, которое считывает документ, выполнить некоторое действие. Типичный пример — использование инструкции обработки для указания приложению использовать определенный стилизованный XSLT для отображения документа.
  • И узел комментария представляет собой комментарий XML.

Последовательность узлов и атомных значений подчиняется следующим правилам. Обратите внимание, что узел пространства имён относится к специальному узлу атрибута с именем xmlns.

  • Каждый узел появляется в последовательности перед появлением его дочерних элементов и их потомков.
  • Потомки узла появляются в последовательности перед появлением каких-либо его братьев и сестёр.
  • Узел документа представляет собой весь документ. Ноль или более узлов документа могут появляться в последовательности, но они могут появляться только как верхние элементы (то есть узел документа не может быть потомком другого узла).
  • Узлы пространства имён сразу следуют за узлом элемента, с которым они связаны.
  • Узлы атрибутов следуют сразу за узлами пространства имён элемента, с которым они связаны, или...
  • Если после элемента нет узлов пространства имён, то узлы атрибутов следуют сразу за элементом.
  • Атомное значение может появляться только как верхний элемент, то есть оно не может появляться как потомок узла.
  • Узлы инструкции обработки не имеют потомков, и их родителем является либо узел документа, либо узел элемента.
  • Узлы комментариев не имеют потомков, и их родителем является либо узел документа, либо узел элемента.

Последовательность узлов и атомных значений передаётся QAbstractXmlReceiver (QXmlSerializer в примере выше) в виде последовательности вызовов функций обратного вызова получателя. Сопоставление функций обратного вызова элементам последовательности таково.

  • startDocument() и endDocument() вызываются для каждого узла документа в последовательности. endDocument() не вызывается до тех пор, пока все дочерние элементы узла документа не появятся в последовательности.
  • startElement() и endElement() вызываются для каждого узла элемента. endElement() не вызывается до тех пор, пока все дочерние элементы узла элемента не появятся в последовательности.
  • attribute() вызывается для каждого узла атрибута.
  • comment() вызывается для каждого узла комментария.
  • characters() вызывается для каждого узла текста.
  • processingInstruction() вызывается для каждого узла инструкции обработки.
  • namespaceBinding() вызывается для каждого узла пространства имён.
  • atomicValue() вызывается для каждого атомного значения.

Для полного объяснения последовательностей XQuery посетите XQuery Data Model.

См. также W3C XQuery 1.0 and XPath 2.0 Data Model (XDM), QXmlSerializer и QXmlResultItems.

Документация по членам-функциям

QAbstractXmlReceiver::QAbstractXmlReceiver()

Конструирует приемник абстрактного xml.

[virtual] QAbstractXmlReceiver::~QAbstractXmlReceiver()

Уничтожает приемник xml.

[pure virtual] void QAbstractXmlReceiver::atomicValue(const QVariant &value)

Этот обратный вызов вызывается, когда в последовательности появляется атомное значение. Значение value — это простое значение данных. Гарантируется, что оно действительно.

[pure virtual] void QAbstractXmlReceiver::attribute(const QXmlName &name, const QStringRef &value)

Этот обратный вызов вызывается, когда в последовательности появляется узел атрибута. name — это имя атрибута, а строка value содержит значение атрибута.

[pure virtual] void QAbstractXmlReceiver::characters(const QStringRef &value)

Этот обратный вызов вызывается, когда в последовательности появляется узел текста. Значение value содержит текст. Смежные узлы текста могут не появляться в последовательности, т.е. этот обратный вызов не должен вызываться дважды подряд.

[pure virtual] void QAbstractXmlReceiver::comment(const QString &value)

Этот обратный вызов вызывается, когда в последовательности появляется узел комментария. Значение value — текст комментария, который не должен содержать строку "--".

[pure virtual] void QAbstractXmlReceiver::endDocument()

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

[pure virtual] void QAbstractXmlReceiver::endElement()

Этот обратный вызов вызывается, когда в последовательности появляется конечный узел элемента.

[pure virtual] void QAbstractXmlReceiver::endOfSequence()

Этот обратный вызов вызывается только один раз, сразу после завершения последовательности.

[pure virtual] void QAbstractXmlReceiver::namespaceBinding(const QXmlName &name)

Этот обратный вызов вызывается, когда область действия привязки имени пространства имён распространяется на элемент. Пространство имён определяется URI. В QXmlName name значение QXmlName::namespaceUri() является этим URI. Значение QXmlName::prefix() — это префикс, к которому привязано URI. Локальное имя несущественно и может быть произвольным.

[pure virtual] void QAbstractXmlReceiver::processingInstruction(const QXmlName &target, const QString &value)

Этот обратный вызов вызывается, когда в последовательности появляется инструкция обработки. Инструкция обработки используется в XML-документе для указания приложению, читающему документ, выполнить какое-либо действие. Типичный пример — использование инструкции обработки для указания приложению использовать определённый XSLT-стиль для обработки документа.

<?xml-stylesheet type="test/xsl" href="formatter.xsl"?>

target — имя инструкции обработки. Его префикс и URI пространства имён должны быть пустыми. Его локальное имя — целевое имя. В приведённом примере имя — xml-stylesheet.

Значение value определяет действие, которое необходимо выполнить. Обратите внимание, что value не должно содержать строку "?>". В приведённом примере value — type="test/xsl" href="formatter.xsl.

В целом, следует избегать использования инструкций обработки, поскольку они не учитывают пространства имён и во многих контекстах удаляются. Инструкции обработки часто можно заменить элементами из пользовательского пространства имён.

[pure virtual] void QAbstractXmlReceiver::startDocument()

Этот обратный вызов вызывается, когда в последовательности появляется узел документа.

[pure virtual] void QAbstractXmlReceiver::startElement(const QXmlName &name)

Этот обратный вызов вызывается, когда в последовательности появляется новый узел элемента. name — допустимое имя узла элемента.

[pure virtual] void QAbstractXmlReceiver::startOfSequence()

Этот обратный вызов вызывается только один раз, перед началом последовательности.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/qabstractxmlreceiver.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API