Spec-Zone.ru › Qt 5.6

Класс QXmlFormatter

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

Заголовок: #include <QXmlFormatter>
qmake: QT += xmlpatterns
С момента: Qt 4.4
Наследует: QXmlSerializer
  • Список всех членов, включая унаследованные

Примечание: Все функции в этом классе являются реентерабельными.

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

QXmlFormatter(const QXmlQuery &query, QIODevice *outputDevice)
int indentationDepth() const
void setIndentationDepth(int depth)

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

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 processingInstruction(const QXmlName &name, const QString &value)
virtual void startDocument()
virtual void startElement(const QXmlName &name)
virtual void startOfSequence()
  • 15 открытых функций, унаследованных от QXmlSerializer
  • 12 открытых функций, унаследованных от QAbstractXmlReceiver

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

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

QXmlFormatter — подкласс QXmlSerializer, который форматирует выходные данные XML для лучшего восприятия человеком.

QXmlSerializer выводит XML без добавления ненужных пробелов. В частности, он не добавляет переводы строк и отступы. Чтобы сделать вывод XML более читаемым, QXmlFormatter добавляет переводы строк и отступы, добавляя, удаляя и изменяя узлы последовательности, состоящие только из пробелов. Он также изменяет пробелы в других местах, где они не существенны; например, между атрибутами и в прологе документа.

Например, где базовый класс QXmlSerializer выведет это:

<a><b/><c/><p>Some Text</p></a>

QXmlFormatter выведет это:

<a>
   <b/>
   <c/>
   <p>Some Text</p>
</a>

Если вам нужно просто сериализовать ваш XML в читаемом формате, используйте QXmlFormatter как есть. Уровень отступа по умолчанию составляет 4 пробела, но вы можете установить своё значение отступа с помощью setIndentationDepth().

Переводы строк и отступы, добавляемые QXmlFormatter, подходят для общих форматов, таких как XHTML, SVG или Docbook, где пробелы не важны. Однако, если ваш XML будет использоваться в качестве входных данных, где пробелы важны, то вы должны написать свой собственный подкласс QXmlSerializer или QAbstractXmlReceiver.

Обратите внимание, что использование QXmlFormatter вместо QXmlSerializer увеличит вычислительную нагрузку и размер хранилища документа за счёт вставки пробелов.

Обратите также внимание, что стиль отступа, используемый QXmlFormatter, остаётся слабо определённым и может измениться в будущих версиях Qt. Если требуется определённый стиль отступа, то либо используйте базовый класс QXmlSerializer напрямую, либо напишите свой собственный подкласс QXmlSerializer или QAbstractXmlReceiver. В качестве альтернативы вы можете создать подкласс QXmlFormatter и переопределить вызовы там.

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

QXmlFormatter formatter(query, myOutputDevice);
formatter.setIndentationDepth(2);
query.evaluateTo(&formatter);

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

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

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

outputDevice передаётся непосредственно в конструктор QXmlSerializer.

См. также QXmlSerializer.

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

Переопределено из QAbstractXmlReceiver::atomicValue().

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

Переопределено из QAbstractXmlReceiver::attribute().

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

Переопределено из QAbstractXmlReceiver::characters().

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

Переопределено из QAbstractXmlReceiver::comment().

[virtual] void QXmlFormatter::endDocument()

Переопределено из QAbstractXmlReceiver::endDocument().

[virtual] void QXmlFormatter::endElement()

Переопределено из QAbstractXmlReceiver::endElement().

[virtual] void QXmlFormatter::endOfSequence()

Переопределено из QAbstractXmlReceiver::endOfSequence().

int QXmlFormatter::indentationDepth() const

Возвращает количество пробелов, которое QXmlFormatter выведет для каждого уровня отступа. По умолчанию — четыре.

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

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

Переопределено из QAbstractXmlReceiver::processingInstruction().

void QXmlFormatter::setIndentationDepth(int depth)

Устанавливает depth в качестве количества пробелов, которое QXmlFormatter выведет для уровня отступа. По умолчанию — четыре.

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

[virtual] void QXmlFormatter::startDocument()

Переопределено из QAbstractXmlReceiver::startDocument().

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

Переопределено из QAbstractXmlReceiver::startElement().

[virtual] void QXmlFormatter::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/qxmlformatter.html

Spec-Zone.ru

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