From f502f0dc62f5d606d0ccec467b72bb493a5c89a7 Mon Sep 17 00:00:00 2001 From: "facat@lab.com" Date: Sat, 22 Nov 2014 11:32:12 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BC=80=E5=A7=8B=E5=8A=A0=E5=85=A5=E7=B1=BB?= =?UTF-8?q?=E6=9D=A5=E5=A4=84=E7=90=86=E5=90=84=E7=A7=8D=E5=85=83=E7=B4=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: facat@lab.com --- testHasttable/BasicElementInfo.cpp | 28 +++++++++++++ testHasttable/BasicElementInfo.h | 19 +++++++++ testHasttable/elementhashtable.cpp | 65 ++++++++++++++++++++++++++++++ testHasttable/elementhashtable.h | 28 +++++++++++++ testHasttable/main.cpp | 7 +++- testHasttable/subcontrolarea.cpp | 11 +++++ testHasttable/subcontrolarea.h | 12 ++++++ testHasttable/testHasttable.pro | 15 ++++++- 8 files changed, 182 insertions(+), 3 deletions(-) create mode 100644 testHasttable/BasicElementInfo.cpp create mode 100644 testHasttable/BasicElementInfo.h create mode 100644 testHasttable/elementhashtable.cpp create mode 100644 testHasttable/elementhashtable.h create mode 100644 testHasttable/subcontrolarea.cpp create mode 100644 testHasttable/subcontrolarea.h 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 +#}