5#include <QTextDocument>
9 QDomImplementation implementation;
10 QDomDocumentType docType = implementation.createDocumentType(
11 "scribe-document",
"scribe",
"qt.nokia.com/scribe");
13 document =
new QDomDocument(docType);
17 QDomProcessingInstruction process = document->createProcessingInstruction(
18 "xml",
"version=\"1.0\" encoding=\"utf-8\"");
19 document->appendChild(process);
21 QDomElement documentElement = document->createElement(
"document");
22 document->appendChild(documentElement);
25 QTextBlock currentBlock = textDocument->begin();
27 while (currentBlock.isValid()) {
29 QDomElement blockElement = document->createElement(
"block");
30 document->appendChild(blockElement);
32 readFragment(currentBlock, blockElement, document);
35 processBlock(currentBlock);
39 currentBlock = currentBlock.next();
46void XmlWriter::readFragment(
const QTextBlock ¤tBlock,
47 QDomElement blockElement,
48 QDomDocument *document)
51 QTextBlock::iterator it;
52 for (it = currentBlock.begin(); !(it.atEnd()); ++it) {
53 QTextFragment currentFragment = it.fragment();
54 if (currentFragment.isValid())
56 processFragment(currentFragment);
59 if (currentFragment.isValid()) {
60 QDomElement fragmentElement = document->createElement(
"fragment");
61 blockElement.appendChild(fragmentElement);
63 fragmentElement.setAttribute(
"length", currentFragment.length());
64 QDomText fragmentText = document->createTextNode(currentFragment.text());
66 fragmentElement.appendChild(fragmentText);
73void XmlWriter::processBlock(
const QTextBlock ¤tBlock)
76 QTextBlock localBlock;
77 localBlock = currentBlock;
81void XmlWriter::processFragment(
const QTextFragment ¤tFragment)
84 QTextFragment localFragment;
85 localFragment = currentFragment;
QT_FORWARD_DECLARE_CLASS(QDomDocument)