diff --git a/testHasttable/BasicElementInfo.cpp b/testHasttable/BasicElementInfo.cpp new file mode 100644 index 0000000..b676896 --- /dev/null +++ b/testHasttable/BasicElementInfo.cpp @@ -0,0 +1,28 @@ +#include "BasicElementInfo.h" + +//#include + +bool BasicElementInfo::parseBasicInfo(QXmlStreamReader &reader) +{ +// std::cout<<"father"<<"\n"; + QStringRef elementName; + QStringRef id; + elementName=reader.name(); + qDebug()<name=elementName; + this->id=id; + return true; +} diff --git a/testHasttable/BasicElementInfo.h b/testHasttable/BasicElementInfo.h new file mode 100644 index 0000000..77c83ec --- /dev/null +++ b/testHasttable/BasicElementInfo.h @@ -0,0 +1,19 @@ +#ifndef BASICELEMENTINFO_H +#define BASICELEMENTINFO_H + +#include +#include +#include +#include +class BasicElementInfo{ +protected: + bool parseBasicInfo(QXmlStreamReader &reader); + QStringRef name; + QStringRef id; + QString nextLinkString; + QString prevousLinkString; +}; + + + +#endif // BASICELEMENTINFO_H diff --git a/testHasttable/elementhashtable.cpp b/testHasttable/elementhashtable.cpp new file mode 100644 index 0000000..2c4844d --- /dev/null +++ b/testHasttable/elementhashtable.cpp @@ -0,0 +1,65 @@ +#include "elementhashtable.h" +//#include +ElementHashtable::ElementHashtable(QObject *parent) : + QObject(parent) +{ +} + +bool ElementHashtable::child(QXmlStreamReader &reader) +{ + + + QStringRef elementName; + elementName=reader.name(); + BasicElementInfo *pointer=NULL; + if(elementName.toString()=="SubControlArea") + { + SubControlArea sa; + pointer=&sa; + sa.parse(reader); + } + + if(pointer) + { + this->eleHT[elementName.toString()]=*pointer; + } + return true; +} + +bool ElementHashtable::parse(const QString& xmlPath) +{ + QFile xmlFile(xmlPath); + + int loop=0; + if(xmlFile.open(QFile::ReadOnly)) + { + QXmlStreamReader reader(&xmlFile); + while(!reader.atEnd() && !reader.hasError()) + { + reader.readNext(); + if(reader.isStartElement()) + { + if(reader.name()=="RDF")//不要读 +#include +#include +#include +#include +#include +#include "BasicElementInfo.h" +#include "subcontrolarea.h" +class ElementHashtable : public QObject +{ + Q_OBJECT +public: + explicit ElementHashtable(QObject *parent = 0); + bool parse(const QString& xmlPath); +private: + bool child(QXmlStreamReader &reader); + QHash eleHT; + +signals: + +public slots: + +}; + +#endif // ELEMENTHASHTABLE_H diff --git a/testHasttable/main.cpp b/testHasttable/main.cpp index 470a030..a4eb639 100644 --- a/testHasttable/main.cpp +++ b/testHasttable/main.cpp @@ -1,8 +1,11 @@ #include - +#include +#include int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); - + ElementHashtable eleReader; + eleReader.parse("D:/Project/佛山项目/佛山收资/exportmodel_zwyth/df8003/df8600/exportfiles/exportmodel_zwyth.xml"); + std::cout<<"Finished."<parseBasicInfo(reader); + return true; +} diff --git a/testHasttable/subcontrolarea.h b/testHasttable/subcontrolarea.h new file mode 100644 index 0000000..6675661 --- /dev/null +++ b/testHasttable/subcontrolarea.h @@ -0,0 +1,12 @@ +#ifndef SUBCONTROLAREA_H +#define SUBCONTROLAREA_H +#include "BasicElementInfo.h" +#include +class SubControlArea:public BasicElementInfo +{ +public: + SubControlArea(); + bool parse(QXmlStreamReader &reader); +}; + +#endif // SUBCONTROLAREA_H diff --git a/testHasttable/testHasttable.pro b/testHasttable/testHasttable.pro index 144d657..88e867e 100644 --- a/testHasttable/testHasttable.pro +++ b/testHasttable/testHasttable.pro @@ -5,6 +5,7 @@ #------------------------------------------------- QT += core +QT +=xml QT -= gui @@ -15,4 +16,16 @@ CONFIG -= app_bundle TEMPLATE = app -SOURCES += main.cpp +SOURCES += main.cpp \ + elementhashtable.cpp \ + subcontrolarea.cpp \ + BasicElementInfo.cpp + +HEADERS += \ + elementhashtable.h \ + BasicElementInfo.h \ + subcontrolarea.h + +#release{ +#DEFINES += QT_NO_DEBUG_OUTPUT +#}