Spec-Zone.ru › Qt 5.14

Класс QXmlSerializer

Класс QXmlSerializer — это реализация класса QAbstractXmlReceiver для преобразования выходных данных XQuery в неформатированный XML. Подробнее...

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

QXmlFormatter

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

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

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

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

QXmlSerializer(const QXmlQuery &query, QIODevice *outputDevice)
const QTextCodec * codec() const
QIODevice * outputDevice() const
void setCodec(const QTextCodec *outputCodec)

Переопределённые открытые функции

virtual void atomicValue(const QVariant &value) override
virtual void attribute(const QXmlName &name, const QStringRef &value) override
virtual void characters(const QStringRef &value) override
virtual void comment(const QString &value) override
virtual void endDocument() override
virtual void endElement() override
virtual void endOfSequence() override
virtual void namespaceBinding(const QXmlName &nb) override
virtual void processingInstruction(const QXmlName &name, const QString &value) override
virtual void startDocument() override
virtual void startElement(const QXmlName &name) override
virtual void startOfSequence() override

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

QXmlSerializer преобразует последовательность XQuery, обычно выходные данные QXmlQuery, в XML. Рассмотрим пример:

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

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

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

QXmlSerializer будет:

  • Объявлять пространства имен при необходимости,
  • Использовать соответствующее экранирование, когда символы не могут быть представлены в XML,
  • Обрабатывать окончания строк соответствующим образом,
  • Сообщать об ошибках, когда невозможно выполнить сериализацию содержимого, например, когда требуется сериализация атрибута, являющегося узлом верхнего уровня, или когда встречается более одного элемента верхнего уровня.

Если при сериализации возникнет ошибка, результат не определён, если сериализатор не вызывается через вызов QXmlQuery::evaluateTo().

Если сгенерированный XML должен быть отформатирован с отступами для чтения, используйте QXmlFormatter.

См. также XSLT 2.0 и XQuery 1.0 Serialization и QXmlFormatter.

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

QXmlSerializer::QXmlSerializer(const QXmlQuery &query, QIODevice *outputDevice)

Создает сериализатор, который использует пул имен и обработчик сообщений в query и записывает вывод в outputDevice.

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

outputDevice не должен быть открыт с помощью QIODevice::Text, потому что это приведет к некорректному выводу. Этот класс гарантирует, что окончания строк будут сериализованы в соответствии со спецификацией XML. QXmlSerializer не берет на себя управление outputDevice.

[override virtual] void QXmlSerializer::atomicValue(const QVariant &value)

Реализует: QAbstractXmlReceiver::atomicValue(const QVariant &value).

[override virtual] void QXmlSerializer::attribute(const QXmlName &name, const QStringRef &value)

Реализует: QAbstractXmlReceiver::attribute(const QXmlName &name, const QStringRef &value).

[override virtual] void QXmlSerializer::characters(const QStringRef &value)

Реализует: QAbstractXmlReceiver::characters(const QStringRef &value).

const QTextCodec *QXmlSerializer::codec() const

Возвращает кодек, используемый сериализатором для кодирования выходного XML.

См. также setCodec().

[override virtual] void QXmlSerializer::comment(const QString &value)

Реализует: QAbstractXmlReceiver::comment(const QString &value).

[override virtual] void QXmlSerializer::endDocument()

Реализует: QAbstractXmlReceiver::endDocument().

[override virtual] void QXmlSerializer::endElement()

Реализует: QAbstractXmlReceiver::endElement().

[override virtual] void QXmlSerializer::endOfSequence()

Реализует: QAbstractXmlReceiver::endOfSequence().

[override virtual] void QXmlSerializer::namespaceBinding(const QXmlName &nb)

Реализует: QAbstractXmlReceiver::namespaceBinding(const QXmlName &name).

QIODevice *QXmlSerializer::outputDevice() const

Возвращает указатель на устройство вывода. Нет соответствующей функции для *установки* устройства вывода, потому что устройство вывода должно быть передано в конструктор. Сериализатор не берет на себя управление своим устройством ввода-вывода.

[override virtual] void QXmlSerializer::processingInstruction(const QXmlName &name, const QString &value)

Реализует: QAbstractXmlReceiver::processingInstruction(const QXmlName &target, const QString &value).

void QXmlSerializer::setCodec(const QTextCodec *outputCodec)

Устанавливает кодек, который сериализатор будет использовать для кодирования выходного XML. Кодек вывода устанавливается в outputCodec. По умолчанию кодек вывода устанавливается в UTF-8. Сериализатор не берет на себя управление кодеком.

См. также codec().

[override virtual] void QXmlSerializer::startDocument()

Реализация: QAbstractXmlReceiver::startDocument().

[override virtual] void QXmlSerializer::startElement(const QXmlName &name)

Реализация: QAbstractXmlReceiver::startElement(const QXmlName &name).

[override virtual] void QXmlSerializer::startOfSequence()

Реализация: QAbstractXmlReceiver::startOfSequence().

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

Spec-Zone.ru

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