diff options
| author | craig <craig@11d20701-8431-0410-a711-e3c959e3b870> | 2012-01-01 11:40:09 +0000 |
|---|---|---|
| committer | craig <craig@11d20701-8431-0410-a711-e3c959e3b870> | 2012-01-01 11:40:09 +0000 |
| commit | 7ed83b6c6666eb8b6b104c211ae7e52907350372 (patch) | |
| tree | 4430b556abac0ad660a0aacf1887d77f85d8be02 /scribus/desaxe/digester_parse.cpp | |
| download | scribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.tar.gz scribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.tar.xz scribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.zip | |
Branch 1.3.5 tree to 1.4.x tree, goodbye 1.3.x
git-svn-id: svn://scribus.net/branches/Version14x/Scribus@17163 11d20701-8431-0410-a711-e3c959e3b870
Diffstat (limited to 'scribus/desaxe/digester_parse.cpp')
| -rw-r--r-- | scribus/desaxe/digester_parse.cpp | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/scribus/desaxe/digester_parse.cpp b/scribus/desaxe/digester_parse.cpp new file mode 100644 index 0000000..ecc7015 --- /dev/null +++ b/scribus/desaxe/digester_parse.cpp @@ -0,0 +1,95 @@ +/* + * digester_parse.h + * + * + * Created by Andreas Vox on 02.06.06. + * Copyright 2006 under GPL2. All rights reserved. + * + */ + + +#include <QFile> +#include <QString> +#include <QXmlDefaultHandler> + +#include "digester.h" + +namespace desaxe { + +class DigesterParser : public QXmlDefaultHandler +{ +public: + DigesterParser(Digester* digester) : dig(digester) {} + bool startDocument() + { + dig->beginDoc(); + return true; + } + bool startElement( const QString& nsURI, const QString& locName, const QString& qName, + const QXmlAttributes& qattr) + { + Xml_attr attr; + for (int i=0; i < qattr.count(); ++i) + attr[qattr.qName(i)] = fromSTLString(qattr.value(i).toUtf8().data()); + dig->begin(qName, attr); + return true; + } + + bool endElement( const QString& nsURI, const QString& locName, const QString& qName) + { + dig->end(qName); + return true; + } + + bool characters ( const QString & ch ) + { + dig->chars(ch); + return true; + } + + bool error(const QXmlParseException& exception) + { + qDebug("error : line %d, column %d, %s\n", exception.lineNumber(), exception.columnNumber(), exception.message().toLocal8Bit().data()); + return true; + } + + bool fatalError(const QXmlParseException& exception) + { + qDebug("fatal error : line %d, column %d, %s\n", exception.lineNumber(), exception.columnNumber(), exception.message().toLocal8Bit().data()); + return true; + } + + bool warning(const QXmlParseException& exception) + { + qDebug("warning : line %d, column %d, %s\n", exception.lineNumber(), exception.columnNumber(), exception.message().toLocal8Bit().data()); + return true; + } + +private: + Digester * dig; +}; + +void Digester::parseFile(const Xml_string& filename) +{ + DigesterParser handler(this); + QFile xmlFile( filename ); + QXmlInputSource source( &xmlFile ); + QXmlSimpleReader reader; + reader.setContentHandler( &handler ); + reader.setErrorHandler( &handler ); + reader.parse( source ); +} + +void Digester::parseMemory(const char* data, unsigned int length) +{ + DigesterParser handler(this); + QXmlInputSource source; + source.setData(QString::fromUtf8(data, length)); + QXmlSimpleReader reader; + reader.setContentHandler( &handler ); + reader.setErrorHandler( &handler ); + reader.parse( source ); +} + +} // namespace + |
