Класс QXmlSerializer
Класс QXmlSerializer представляет собой реализацию QAbstractXmlReceiver для преобразования выходных данных XQuery в неформатированный XML. Подробнее...
| Заголовок: | #include <QXmlSerializer> |
| qmake: | QT += xmlpatterns |
| С тех пор: | Qt 4.4 |
| Наследует: | QAbstractXmlReceiver |
| Наследуется от: |
Этот класс был представлен в 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.15/qxmlserializer.html