Spec-Zone.ru › Qt 5.14

Класс 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 и 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.14/qabstractxmlreceiver.html

Spec-Zone.ru

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