00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef NANOXML_H
00023 #define NANOXML_H
00024
00025 #include <QVariant>
00026 #include <QStringList>
00027 #include <QObject>
00028 #include <QXmlDefaultHandler>
00029 #include <QStack>
00030 #include "assoctree.h"
00031
00032 class NanoXml : public QXmlDefaultHandler
00033 {
00034 public:
00035 NanoXml(const QString& path);
00036 NanoXml(QIODevice *ioDevice);
00037 ~NanoXml();
00038 const QString namespaceUri();
00039 bool didFail();
00040
00041 private:
00042 QVariant rootVariant;
00043 QList<QVariant> *current;
00044 QStack<QList <QVariant>* > stack;
00045 bool failed;
00046 QString nspace;
00047
00048 void pushList();
00049 void addValue(const QString& v);
00050 void popList();
00051 void initAndParse(QIODevice *ioDevice);
00052
00053 public:
00054 bool startElement(const QString&, const QString&, const QString &name, const QXmlAttributes &attrs);
00055 bool endElement(const QString&, const QString&, const QString &name);
00056 bool startPrefixMapping(const QString &prefix, const QString &uri);
00057 bool characters(const QString &chars);
00058
00059 AssocTree result();
00060 };
00061
00062 #endif // NANOXML_H