Класс 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) |
| virtual void | attribute(const QXmlName &name, const QStringRef &value) |
| virtual void | characters(const QStringRef &value) |
| virtual void | comment(const QString &value) |
| virtual void | endDocument() |
| virtual void | endElement() |
| virtual void | endOfSequence() |
| virtual void | namespaceBinding(const QXmlName &nb) |
| virtual void | processingInstruction(const QXmlName &name, const QString &value) |
| virtual void | startDocument() |
| virtual void | startElement(const QXmlName &name) |
| virtual void | startOfSequence() |
- 12 открытых функций унаследовано от QAbstractXmlReceiver
Подробное описание
Класс 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 Serialization и QXmlFormatter.
Документация по функциям-членам
QXmlSerializer::QXmlSerializer(const QXmlQuery &query, QIODevice *outputDevice)
Создаёт сериализатор, который использует пул имён и обработчик сообщений в query и записывает вывод в outputDevice.
outputDevice должен быть допустимым, не равным null устройством, открытым в режиме записи, в противном случае поведение не определено.
outputDevice не должен быть открыт с QIODevice::Text, так как это приведёт к некорректности вывода. Этот класс будет гарантировать, что окончания строк сериализуются в соответствии со спецификацией XML. QXmlSerializer не принимает на себя владение outputDevice.
[virtual] void QXmlSerializer::atomicValue(const QVariant &value)
Переопределено из QAbstractXmlReceiver::atomicValue().
[virtual] void QXmlSerializer::attribute(const QXmlName &name, const QStringRef &value)
Переопределено из QAbstractXmlReceiver::attribute().
[virtual] void QXmlSerializer::characters(const QStringRef &value)
Переопределено из QAbstractXmlReceiver::characters().
const QTextCodec *QXmlSerializer::codec() const
Возвращает кодек, используемый сериализатором для кодирования вывода XML.
См. также setCodec().
[virtual] void QXmlSerializer::comment(const QString &value)
Переопределено из QAbstractXmlReceiver::comment().
[virtual] void QXmlSerializer::endDocument()
Переопределено из QAbstractXmlReceiver::endDocument().
[virtual] void QXmlSerializer::endElement()
Переопределено из QAbstractXmlReceiver::endElement().
[virtual] void QXmlSerializer::endOfSequence()
Переопределено из QAbstractXmlReceiver::endOfSequence().
[virtual] void QXmlSerializer::namespaceBinding(const QXmlName &nb)
Переопределено из QAbstractXmlReceiver::namespaceBinding().
QIODevice *QXmlSerializer::outputDevice() const
Возвращает указатель на устройство вывода. Нет соответствующей функции для *установки* устройства вывода, так как устройство вывода должно быть передано в конструктор. Сериализатор не принимает на себя владение устройством ввода/вывода.
[virtual] void QXmlSerializer::processingInstruction(const QXmlName &name, const QString &value)
Переопределено из QAbstractXmlReceiver::processingInstruction().
void QXmlSerializer::setCodec(const QTextCodec *outputCodec)
Устанавливает кодек, который сериализатор будет использовать для кодирования вывода XML. Кодек вывода устанавливается в outputCodec. По умолчанию кодек вывода устанавливается в кодек для UTF-8. Сериализатор не принимает на себя владение кодеком.
См. также codec().
[virtual] void QXmlSerializer::startDocument()
Переопределено из QAbstractXmlReceiver::startDocument().
[virtual] void QXmlSerializer::startElement(const QXmlName &name)
Переопределено из QAbstractXmlReceiver::startElement().
[virtual] void QXmlSerializer::startOfSequence()
Переопределено из QAbstractXmlReceiver::startOfSequence().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qxmlserializer.html