Описание класса QXmlFormatter
|
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 () |
Класс 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);
Создаёт редактор (formatter), который использует пулы имён и сообщения обработчика в query и записывает результат, отформатированный XML, в outputDevice.
outputDevice передаётся непосредственно в конструктор QXmlSerializer.
Смотрите также QXmlSerializer.
Переопределено из QAbstractXmlReceiver::atomicValue().
Переопределено из QAbstractXmlReceiver::attribute().
Переопределено из QAbstractXmlReceiver::characters().
Переопределено из QAbstractXmlReceiver::comment().
Переопределено из QAbstractXmlReceiver::endDocument().
Переопределено из QAbstractXmlReceiver::endElement().
Переопределено из QAbstractXmlReceiver::endOfSequence().
Возвращает число пробелов, которые QXmlFormatter будет выводить на каждом уровне отступов. По умолчанию это четыре.
Смотрите также setIndentationDepth().
Переопределено из QAbstractXmlReceiver::processingInstruction().
Устанавливает глубину depth отступа, т.е. число пробелов, которые QXmlFormatter будет выводить на каждом уровне отступов. По умолчанию это четыре.
Смотрите также indentationDepth().
Переопределено из QAbstractXmlReceiver::startDocument().
Переопределено из QAbstractXmlReceiver::startElement().
Переопределено из QAbstractXmlReceiver::startOfSequence().
Авторские права © 2010 Nokia Corporation и/или её дочерние компании | Торговые марки | Qt 4.6.4 |
Попытка перевода Qt документации. Если есть желание присоединиться, или если есть замечания или пожелания, то заходите на форум: Перевод Qt документации на русский язык... Люди внесшие вклад в перевод: Команда переводчиков |