Описание класса QXmlFormatter [модуль QtXmlPatterns]
Класс QXmlFormatter являетя реализацией QXmlSerializer для преобразования вывода XQuery в форматированный XML. Далее...
#include <QXmlFormatter> Наследует QXmlSerializer.
Замечание: все функции этого класса реентерабильны.
Этот класс был введён в Qt 4.4.
Открытые функции
Подробное описание
Класс 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 )
Создаёт редактор (formatter), который использует пулы имён и сообщения обработчика в query и записывает результат, отформатированный XML, в outputDevice.
outputDevice передаётся непосредственно в конструктор QXmlSerializer.
Смотрите также QXmlSerializer.
int QXmlFormatter::indentationDepth () const
Возвращает число пробелов, которые QXmlFormatter будет выводить на каждом уровне отступов. По умолчанию это четыре.
Смотрите также setIndentationDepth().
void QXmlFormatter::setIndentationDepth ( int depth )
Устанавливает глубину depth отступа, т.е. число пробелов, которые QXmlFormatter будет выводить на каждом уровне отступов. По умолчанию это четыре.
Смотрите также indentationDepth().
|