Класс QXmlSerializer
Класс QXmlSerializer — это реализация класса QAbstractXmlReceiver для преобразования выходных данных XQuery в неформатированный XML. Подробнее...
| Заголовок: | #include <QXmlSerializer> |
| qmake: | QT += xmlpatterns |
| С тех пор: | Qt 4.4 |
| Наследует: | QAbstractXmlReceiver |
| Наследуется от: |
Примечание: Все функции в этом классе являются перевходными.
Публичные функции
| 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 — это реализация класса QAbstractXmlReceiver для преобразования выходных данных XQuery в неформатированный XML.
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 и 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)
[override virtual] void QXmlSerializer::attribute(const QXmlName &name, const QStringRef &value)
[override virtual] void QXmlSerializer::characters(const QStringRef &value)
const QTextCodec *QXmlSerializer::codec() const
Возвращает кодек, используемый сериализатором для кодирования выходных данных XML.
См. также setCodec().
[override virtual] void QXmlSerializer::comment(const QString &value)
[override virtual] void QXmlSerializer::endDocument()
[override virtual] void QXmlSerializer::endElement()
[override virtual] void QXmlSerializer::endOfSequence()
[override virtual] void QXmlSerializer::namespaceBinding(const QXmlName &nb)
QIODevice *QXmlSerializer::outputDevice() const
Возвращает указатель на устройство вывода. Нет соответствующей функции для *установки* устройства вывода, поскольку устройство вывода должно быть передано в конструктор. Сериализатор не принимает на себя владение своим устройством ввода-вывода.
[override virtual] void QXmlSerializer::processingInstruction(const QXmlName &name, const QString &value)
void QXmlSerializer::setCodec(const QTextCodec *outputCodec)
Устанавливает кодек, который сериализатор будет использовать для кодирования выходных данных XML. Кодек вывода устанавливается в outputCodec. По умолчанию кодек вывода устанавливается в кодек для UTF-8. Сериализатор не принимает на себя владение кодеком.
См. также codec().
[override virtual] void QXmlSerializer::startDocument()
[override virtual] void QXmlSerializer::startElement(const QXmlName &name)
[override virtual] void QXmlSerializer::startOfSequence()
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.12/qxmlserializer.html