Класс 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 и 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/qt-5.9/qxmlserializer.html