From ccc4c1d90c1df7f51b8933103c28ca83cde14052 Mon Sep 17 00:00:00 2001 From: "facat@lab.com" Date: Sat, 22 Nov 2014 16:27:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=8A=E5=A4=A7=E6=96=87=E4=BB=B6=E6=8B=86?= =?UTF-8?q?=E6=88=90=E5=B0=8F=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: facat@lab.com --- testHasttable/elementhashtable.cpp | 17 ++++--- testHasttable/elementhashtable.h | 1 - testHasttable/main.cpp | 6 ++- testHasttable/regexextract.cpp | 75 ++++++++++++++++++++++++++++++ testHasttable/regexextract.h | 20 ++++++++ testHasttable/testHasttable.pro | 6 ++- 6 files changed, 112 insertions(+), 13 deletions(-) create mode 100644 testHasttable/regexextract.cpp create mode 100644 testHasttable/regexextract.h diff --git a/testHasttable/elementhashtable.cpp b/testHasttable/elementhashtable.cpp index 2c4844d..ddcf7f0 100644 --- a/testHasttable/elementhashtable.cpp +++ b/testHasttable/elementhashtable.cpp @@ -1,5 +1,5 @@ #include "elementhashtable.h" -//#include +#include ElementHashtable::ElementHashtable(QObject *parent) : QObject(parent) { @@ -12,12 +12,12 @@ 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(elementName.toString()=="SubControlArea") +// { +// SubControlArea sa; +// pointer=&sa; +// sa.parse(reader); +// } if(pointer) { @@ -49,7 +49,7 @@ bool ElementHashtable::parse(const QString& xmlPath) } loop++; if(loop>20){ - break; +// break; } } @@ -60,6 +60,5 @@ bool ElementHashtable::parse(const QString& xmlPath) } xmlFile.close(); } - return true; } diff --git a/testHasttable/elementhashtable.h b/testHasttable/elementhashtable.h index d40f976..2d23cfb 100644 --- a/testHasttable/elementhashtable.h +++ b/testHasttable/elementhashtable.h @@ -18,7 +18,6 @@ public: private: bool child(QXmlStreamReader &reader); QHash eleHT; - signals: public slots: diff --git a/testHasttable/main.cpp b/testHasttable/main.cpp index a4eb639..50d0f9f 100644 --- a/testHasttable/main.cpp +++ b/testHasttable/main.cpp @@ -1,11 +1,15 @@ #include #include +#include "regexextract.h" #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"); +// eleReader.parse("D:/Project/佛山项目/佛山收资/exportmodel_pw/df8003/df8600/exportfiles/exportmodel_pw.xml"); + RegexExtract regexExt; + regexExt.extract("D:/Project/佛山项目/佛山收资/exportmodel_pw/df8003/df8600/exportfiles/exportmodel_pw.xml"); + regexExt.exportBlocks("ConnectivityNode.xml"); std::cout<<"Finished."< +RegexExtract::RegexExtract() +{ +} + + + +bool RegexExtract::endsWith(const QString& line,const QString& eleName) +{ + QString t=line.trimmed(); + return t.startsWith(QString("")); + +} + +void RegexExtract::exportBlocks(const QString& path) +{ + QFile file(path); + std::cout<<"writing..."<blocks.begin(); + ite!=this->blocks.end(); + ite++) + { + writer<<*ite; + } + file.close(); + } +} + +bool RegexExtract::extract(const QString& xmlPath) +{ + QFile file(xmlPath); + QString line; + QString block; + bool isInner=false; + if(file.open(QFile::ReadOnly)) + { + QTextStream reader(&file); + while(!reader.atEnd()) + { + line=reader.readLine(); +// std::cout<startsWith(line,"ConnectivityNode")) + { + block=""; + isInner=true; + } + if(isInner) + { + block=block+line+QString("\n"); + } + if(isInner && this->endsWith(line,"ConnectivityNode")) + { + isInner=false; + this->blocks.push_back(block); +// std::cout< +#include +#include +#include + +class RegexExtract +{ +public: + RegexExtract(); + bool extract(const QString& xmlPath); + void exportBlocks(const QString& path); +protected: + bool startsWith(const QString& line,const QString& eleName); + bool endsWith(const QString& line,const QString& eleName); + QStringList blocks; +}; + +#endif // REGEXEXTRACT_H diff --git a/testHasttable/testHasttable.pro b/testHasttable/testHasttable.pro index 88e867e..3a17451 100644 --- a/testHasttable/testHasttable.pro +++ b/testHasttable/testHasttable.pro @@ -19,12 +19,14 @@ TEMPLATE = app SOURCES += main.cpp \ elementhashtable.cpp \ subcontrolarea.cpp \ - BasicElementInfo.cpp + BasicElementInfo.cpp \ + regexextract.cpp HEADERS += \ elementhashtable.h \ BasicElementInfo.h \ - subcontrolarea.h + subcontrolarea.h \ + regexextract.h #release{ #DEFINES += QT_NO_DEBUG_OUTPUT