Spec-Zone.ru › Qt 5.15

Класс QXmlFormatter

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

Заголовок: #include <QXmlFormatter>
qmake: QT += xmlpatterns
С тех пор: Qt 4.4
Наследует: QXmlSerializer

Этот класс был представлен в Qt 4.4.

  • Список всех членов, включая унаследованные

Примечание: Все функции этого класса являются перевходящими.

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

QXmlFormatter(const QXmlQuery &query, QIODevice *outputDevice)
int глубина_отступа() const
void установить_глубину_отступа(int depth)

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

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 конец_документа() override
virtual void конец_элемента() override
virtual void конец_последовательности() override
virtual void обработка_инструкции(const QXmlName &name, const QString &value) override
virtual void начало_документа() override
virtual void начало_элемента(const QXmlName &name) override
virtual void начало_последовательности() override

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

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.

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

Переопределяет: QXmlSerializer::atomicValue(const QVariant &value).

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

Переопределяет: QXmlSerializer::attribute(const QXmlName &name, const QStringRef &value).

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

Переопределяет: QXmlSerializer::characters(const QStringRef &value).

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

Переопределяет: QXmlSerializer::comment(const QString &value).

[override virtual] void QXmlFormatter::endDocument()

Переопределяет: QXmlSerializer::endDocument().

[override virtual] void QXmlFormatter::endElement()

Переопределяет: QXmlSerializer::endElement().

[override virtual] void QXmlFormatter::endOfSequence()

Переопределяет: QXmlSerializer::endOfSequence().

int QXmlFormatter::глубина_отступа() const

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

См. также установить_глубину_отступа().

[override virtual] void QXmlFormatter::обработка_инструкции(const QXmlName &name, const QString &value)

Переопределяет: QXmlSerializer::processingInstruction(const QXmlName &name, const QString &value).

void QXmlFormatter::установить_глубину_отступа(int depth)

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

См. также глубина_отступа().

[override virtual] void QXmlFormatter::начало_документа()

Переопределяет: QXmlSerializer::startDocument().

[override virtual] void QXmlFormatter::начало_элемента(const QXmlName &name)

Переопределяет: QXmlSerializer::startElement(const QXmlName &name).

[override virtual] void QXmlFormatter::начало_последовательности()

Переопределяет: QXmlSerializer::startOfSequence().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/qxmlformatter.html

Spec-Zone.ru

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