parent
ccc4c1d90c
commit
407fe62995
|
|
@ -1,10 +1,25 @@
|
||||||
#include "BasicElementInfo.h"
|
#include "BasicElementInfo.h"
|
||||||
|
|
||||||
//#include <iostream>
|
//#include <iostream>
|
||||||
|
BasicElementInfo::BasicElementInfo()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool BasicElementInfo::derivedParse(QXmlStreamReader& reader)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool BasicElementInfo::parse(QXmlStreamReader &reader)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
bool BasicElementInfo::parseBasicInfo(QXmlStreamReader &reader)
|
bool BasicElementInfo::parseBasicInfo(QXmlStreamReader &reader)
|
||||||
{
|
{
|
||||||
// std::cout<<"father"<<"\n";
|
// std::cout<<"father"<<"\n";
|
||||||
QStringRef elementName;
|
QStringRef elementName;
|
||||||
QStringRef id;
|
QStringRef id;
|
||||||
elementName=reader.name();
|
elementName=reader.name();
|
||||||
|
|
@ -14,14 +29,17 @@ bool BasicElementInfo::parseBasicInfo(QXmlStreamReader &reader)
|
||||||
qDebug()<<reader.attributes().value("rdf:ID")<<"\n";
|
qDebug()<<reader.attributes().value("rdf:ID")<<"\n";
|
||||||
id=reader.attributes().value("rdf:ID");
|
id=reader.attributes().value("rdf:ID");
|
||||||
}
|
}
|
||||||
|
|
||||||
while(!reader.atEnd() && !reader.hasError())
|
while(!reader.atEnd() && !reader.hasError())
|
||||||
{
|
{
|
||||||
reader.readNext();
|
reader.readNext();
|
||||||
|
this->derivedParse(reader);
|
||||||
if(reader.isEndElement() && reader.name()==elementName)
|
if(reader.isEndElement() && reader.name()==elementName)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this->name=elementName;
|
this->name=elementName;
|
||||||
this->id=id;
|
this->id=id;
|
||||||
return true;
|
return true;
|
||||||
|
|
|
||||||
|
|
@ -5,13 +5,21 @@
|
||||||
#include <QStringRef>
|
#include <QStringRef>
|
||||||
#include <QXmlStreamReader>
|
#include <QXmlStreamReader>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
class BasicElementInfo;
|
||||||
|
//typedef bool (BasicElementInfo::*derivedParseHandle)(QXmlStreamReader &reader);
|
||||||
class BasicElementInfo{
|
class BasicElementInfo{
|
||||||
|
public:
|
||||||
|
BasicElementInfo();
|
||||||
|
virtual bool parse(QXmlStreamReader &reader);
|
||||||
protected:
|
protected:
|
||||||
bool parseBasicInfo(QXmlStreamReader &reader);
|
bool parseBasicInfo(QXmlStreamReader &reader);
|
||||||
QStringRef name;
|
QStringRef name;
|
||||||
QStringRef id;
|
QStringRef id;
|
||||||
QString nextLinkString;
|
// derivedParseHandle derivedParse;
|
||||||
QString prevousLinkString;
|
virtual bool derivedParse(QXmlStreamReader &reader);
|
||||||
|
|
||||||
|
// QString nextLinkString;
|
||||||
|
// QString prevousLinkString;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,38 @@
|
||||||
|
#include "aclinesegment.h"
|
||||||
|
|
||||||
|
ACLineSegment::ACLineSegment():isTerminalA(true)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ACLineSegment::derivedParse(QXmlStreamReader &reader)
|
||||||
|
{
|
||||||
|
if(this->isTerminalA && "ConductingEquipment.Terminals"==reader.name() && reader.attributes().hasAttribute("rdf:resource"))
|
||||||
|
{
|
||||||
|
QString terminal;
|
||||||
|
terminal=reader.attributes().value("rdf:resource").toString();
|
||||||
|
this->terminalA=terminal.replace("#","").leftRef(-1);//返回整个字符串的Ref
|
||||||
|
qDebug()<<"got "<<"ConductingEquipment.Terminals "<<this->terminalA<<"\n";
|
||||||
|
this->isTerminalA=false;
|
||||||
|
}
|
||||||
|
if(!this->isTerminalA && "ConductingEquipment.Terminals"==reader.name() && reader.attributes().hasAttribute("rdf:resource"))
|
||||||
|
{
|
||||||
|
QString terminal;
|
||||||
|
terminal=reader.attributes().value("rdf:resource").toString();
|
||||||
|
this->terminalB=terminal.replace("#","").leftRef(-1);//返回整个字符串的Ref
|
||||||
|
qDebug()<<"got "<<"ConductingEquipment.Terminals "<<this->terminalB<<"\n";
|
||||||
|
}
|
||||||
|
if("ConductingEquipment.Substation"==reader.name() && reader.attributes().hasAttribute("rdf:resource"))
|
||||||
|
{
|
||||||
|
QString ss;
|
||||||
|
ss=reader.attributes().value("rdf:resource").toString();
|
||||||
|
this->containsOfSubstation=ss.replace("#","").leftRef(-1);//返回整个字符串的Ref
|
||||||
|
qDebug()<<"got "<<"ConductingEquipment.Substation "<<this->containsOfSubstation<<"\n";
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ACLineSegment::parse(QXmlStreamReader &reader)
|
||||||
|
{
|
||||||
|
return this->parseBasicInfo(reader);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
#ifndef ACLINESEGMENT_H
|
||||||
|
#define ACLINESEGMENT_H
|
||||||
|
#include "BasicElementInfo.h"
|
||||||
|
class ACLineSegment:public BasicElementInfo
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
ACLineSegment();
|
||||||
|
virtual bool parse(QXmlStreamReader &reader);
|
||||||
|
protected:
|
||||||
|
QStringRef terminalA;
|
||||||
|
QStringRef terminalB;
|
||||||
|
QStringRef containsOfSubstation;
|
||||||
|
virtual bool derivedParse(QXmlStreamReader &reader);
|
||||||
|
private:
|
||||||
|
bool isTerminalA;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // ACLINESEGMENT_H
|
||||||
|
|
@ -0,0 +1,37 @@
|
||||||
|
#include "breaker.h"
|
||||||
|
|
||||||
|
Breaker::Breaker()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Breaker::derivedParse(QXmlStreamReader &reader)
|
||||||
|
{
|
||||||
|
if(this->isTerminalA && "ConductingEquipment.Terminals"==reader.name() && reader.attributes().hasAttribute("rdf:resource"))
|
||||||
|
{
|
||||||
|
QString terminal;
|
||||||
|
terminal=reader.attributes().value("rdf:resource").toString();
|
||||||
|
this->terminalA=terminal.replace("#","").leftRef(-1);//返回整个字符串的Ref
|
||||||
|
qDebug()<<"got "<<"ConductingEquipment.Terminals "<<this->terminalA<<"\n";
|
||||||
|
this->isTerminalA=false;
|
||||||
|
}
|
||||||
|
if(!this->isTerminalA && "ConductingEquipment.Terminals"==reader.name() && reader.attributes().hasAttribute("rdf:resource"))
|
||||||
|
{
|
||||||
|
QString terminal;
|
||||||
|
terminal=reader.attributes().value("rdf:resource").toString();
|
||||||
|
this->terminalB=terminal.replace("#","").leftRef(-1);//返回整个字符串的Ref
|
||||||
|
qDebug()<<"got "<<"ConductingEquipment.Terminals "<<this->terminalB<<"\n";
|
||||||
|
}
|
||||||
|
if("Equipment.MemberOf_EquipmentContainer"==reader.name() && reader.attributes().hasAttribute("rdf:resource"))
|
||||||
|
{
|
||||||
|
QString ss;
|
||||||
|
ss=reader.attributes().value("rdf:resource").toString();
|
||||||
|
this->equipmentContainer=ss.replace("#","").leftRef(-1);//返回整个字符串的Ref
|
||||||
|
qDebug()<<"got "<<"Equipment.MemberOf_EquipmentContainer "<<this->equipmentContainer<<"\n";
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Breaker::parse(QXmlStreamReader &reader)
|
||||||
|
{
|
||||||
|
return this->parseBasicInfo(reader);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
#ifndef BREAKER_H
|
||||||
|
#define BREAKER_H
|
||||||
|
#include <QXmlStreamReader>
|
||||||
|
#include "BasicElementInfo.h"
|
||||||
|
class Breaker:public BasicElementInfo
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Breaker();
|
||||||
|
virtual bool parse(QXmlStreamReader& reader);
|
||||||
|
protected:
|
||||||
|
QStringRef terminalA;
|
||||||
|
QStringRef terminalB;
|
||||||
|
QStringRef equipmentContainer;
|
||||||
|
virtual bool derivedParse(QXmlStreamReader& reader);
|
||||||
|
private:
|
||||||
|
bool isTerminalA;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // BREAKER_H
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
#include "busbarsection.h"
|
||||||
|
|
||||||
|
BusbarSection::BusbarSection()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool BusbarSection::derivedParse(QXmlStreamReader& reader)
|
||||||
|
{
|
||||||
|
if("ConductingEquipment.Terminals"==reader.name() && reader.attributes().hasAttribute("rdf:resource"))
|
||||||
|
{
|
||||||
|
QString terminal;
|
||||||
|
terminal=reader.attributes().value("rdf:resource").toString();
|
||||||
|
this->terminal=terminal.replace("#","").leftRef(-1);//返回整个字符串的Ref
|
||||||
|
qDebug()<<"got "<<"ConductingEquipment.Terminals "<<this->terminal<<"\n";
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool BusbarSection::parse(QXmlStreamReader& reader)
|
||||||
|
{
|
||||||
|
return this->parseBasicInfo(reader);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
#ifndef BUSBARSECTION_H
|
||||||
|
#define BUSBARSECTION_H
|
||||||
|
#include <QXmlStreamReader>
|
||||||
|
#include "BasicElementInfo.h"
|
||||||
|
class BusbarSection:public BasicElementInfo
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
BusbarSection();
|
||||||
|
virtual bool parse(QXmlStreamReader& reader);
|
||||||
|
protected:
|
||||||
|
QStringRef terminal;
|
||||||
|
virtual bool derivedParse(QXmlStreamReader& reader);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // BUSBARSECTION_H
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
#include "compensator.h"
|
||||||
|
|
||||||
|
Compensator::Compensator()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool Compensator::derivedParse(QXmlStreamReader &reader)
|
||||||
|
{
|
||||||
|
if("ConductingEquipment.Terminals"==reader.name() && reader.attributes().hasAttribute("rdf:resource"))
|
||||||
|
{
|
||||||
|
QString terminal;
|
||||||
|
terminal=reader.attributes().value("rdf:resource").toString();
|
||||||
|
this->terminal=terminal.replace("#","").leftRef(-1);//返回整个字符串的Ref
|
||||||
|
qDebug()<<"got "<<"ConductingEquipment.Terminals "<<this->terminal<<"\n";
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Compensator::parse(QXmlStreamReader &reader)
|
||||||
|
{
|
||||||
|
return this->parseBasicInfo(reader);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
#ifndef COMPENSATOR_H
|
||||||
|
#define COMPENSATOR_H
|
||||||
|
#include <QXmlStreamReader>
|
||||||
|
#include "BasicElementInfo.h"
|
||||||
|
class Compensator:public BasicElementInfo
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Compensator();
|
||||||
|
virtual bool parse(QXmlStreamReader& reader);
|
||||||
|
protected:
|
||||||
|
virtual bool derivedParse(QXmlStreamReader& reader);
|
||||||
|
private:
|
||||||
|
QStringRef terminal;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // COMPENSATOR_H
|
||||||
|
|
@ -0,0 +1,38 @@
|
||||||
|
#include "disconnector.h"
|
||||||
|
|
||||||
|
Disconnector::Disconnector()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool Disconnector::derivedParse(QXmlStreamReader &reader)
|
||||||
|
{
|
||||||
|
if(this->isTerminalA && "ConductingEquipment.Terminals"==reader.name() && reader.attributes().hasAttribute("rdf:resource"))
|
||||||
|
{
|
||||||
|
QString terminal;
|
||||||
|
terminal=reader.attributes().value("rdf:resource").toString();
|
||||||
|
this->terminalA=terminal.replace("#","").leftRef(-1);//返回整个字符串的Ref
|
||||||
|
qDebug()<<"got "<<"ConductingEquipment.Terminals "<<this->terminalA<<"\n";
|
||||||
|
this->isTerminalA=false;
|
||||||
|
}
|
||||||
|
if(!this->isTerminalA && "ConductingEquipment.Terminals"==reader.name() && reader.attributes().hasAttribute("rdf:resource"))
|
||||||
|
{
|
||||||
|
QString terminal;
|
||||||
|
terminal=reader.attributes().value("rdf:resource").toString();
|
||||||
|
this->terminalB=terminal.replace("#","").leftRef(-1);//返回整个字符串的Ref
|
||||||
|
qDebug()<<"got "<<"ConductingEquipment.Terminals "<<this->terminalB<<"\n";
|
||||||
|
}
|
||||||
|
if("Equipment.MemberOf_EquipmentContainer"==reader.name() && reader.attributes().hasAttribute("rdf:resource"))
|
||||||
|
{
|
||||||
|
QString ss;
|
||||||
|
ss=reader.attributes().value("rdf:resource").toString();
|
||||||
|
this->equipmentContainer=ss.replace("#","").leftRef(-1);//返回整个字符串的Ref
|
||||||
|
qDebug()<<"got "<<"Equipment.MemberOf_EquipmentContainer "<<this->equipmentContainer<<"\n";
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Disconnector::parse(QXmlStreamReader &reader)
|
||||||
|
{
|
||||||
|
return this->parseBasicInfo(reader);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
#ifndef DISCONNECTOR_H
|
||||||
|
#define DISCONNECTOR_H
|
||||||
|
#include "BasicElementInfo.h"
|
||||||
|
#include <QXmlStreamReader>
|
||||||
|
class Disconnector:public BasicElementInfo
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Disconnector();
|
||||||
|
virtual bool parse(QXmlStreamReader& reader);
|
||||||
|
protected:
|
||||||
|
QStringRef terminalA;
|
||||||
|
QStringRef terminalB;
|
||||||
|
QStringRef equipmentContainer;
|
||||||
|
virtual bool derivedParse(QXmlStreamReader& reader);
|
||||||
|
private:
|
||||||
|
bool isTerminalA;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // DISCONNECTOR_H
|
||||||
|
|
@ -12,12 +12,47 @@ bool ElementHashtable::child(QXmlStreamReader &reader)
|
||||||
QStringRef elementName;
|
QStringRef elementName;
|
||||||
elementName=reader.name();
|
elementName=reader.name();
|
||||||
BasicElementInfo *pointer=NULL;
|
BasicElementInfo *pointer=NULL;
|
||||||
// if(elementName.toString()=="SubControlArea")
|
if(elementName=="BusbarSection")
|
||||||
// {
|
{
|
||||||
// SubControlArea sa;
|
pointer=new BusbarSection;
|
||||||
// pointer=&sa;
|
pointer->parse(reader);
|
||||||
// sa.parse(reader);
|
}
|
||||||
// }
|
if(elementName=="Terminal")
|
||||||
|
{
|
||||||
|
pointer=new Terminal;
|
||||||
|
pointer->parse(reader);
|
||||||
|
}
|
||||||
|
if(elementName=="ACLineSegment")
|
||||||
|
{
|
||||||
|
pointer=new ACLineSegment;
|
||||||
|
pointer->parse(reader);
|
||||||
|
}
|
||||||
|
if(elementName=="Breaker")
|
||||||
|
{
|
||||||
|
pointer=new Breaker;
|
||||||
|
pointer->parse(reader);
|
||||||
|
}
|
||||||
|
if(elementName=="Compensator")
|
||||||
|
{
|
||||||
|
pointer=new Compensator;
|
||||||
|
pointer->parse(reader);
|
||||||
|
}
|
||||||
|
if(elementName=="Disconnector")
|
||||||
|
{
|
||||||
|
pointer=new Disconnector;
|
||||||
|
pointer->parse(reader);
|
||||||
|
}
|
||||||
|
if(elementName=="PowerTransformer")
|
||||||
|
{
|
||||||
|
pointer=new PowerTransformer;
|
||||||
|
pointer->parse(reader);
|
||||||
|
}
|
||||||
|
if(elementName=="SynchronousMachine")
|
||||||
|
{
|
||||||
|
pointer=new SynchronousMachine;
|
||||||
|
pointer->parse(reader);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if(pointer)
|
if(pointer)
|
||||||
{
|
{
|
||||||
|
|
@ -45,7 +80,6 @@ bool ElementHashtable::parse(const QString& xmlPath)
|
||||||
}
|
}
|
||||||
|
|
||||||
this->child(reader);//处理根元素下的第一级子元素,也就是Substation这一类。
|
this->child(reader);//处理根元素下的第一级子元素,也就是Substation这一类。
|
||||||
|
|
||||||
}
|
}
|
||||||
loop++;
|
loop++;
|
||||||
if(loop>20){
|
if(loop>20){
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,14 @@
|
||||||
#include <QHash>
|
#include <QHash>
|
||||||
#include "BasicElementInfo.h"
|
#include "BasicElementInfo.h"
|
||||||
#include "subcontrolarea.h"
|
#include "subcontrolarea.h"
|
||||||
|
#include "busbarsection.h"
|
||||||
|
#include "terminal.h"
|
||||||
|
#include "aclinesegment.h"
|
||||||
|
#include "breaker.h"
|
||||||
|
#include "compensator.h"
|
||||||
|
#include "disconnector.h"
|
||||||
|
#include "powertransformer.h"
|
||||||
|
#include "synchronousmachine.h"
|
||||||
class ElementHashtable : public QObject
|
class ElementHashtable : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
|
||||||
|
|
@ -6,10 +6,10 @@ int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
QCoreApplication a(argc, argv);
|
QCoreApplication a(argc, argv);
|
||||||
ElementHashtable eleReader;
|
ElementHashtable eleReader;
|
||||||
// eleReader.parse("D:/Project/佛山项目/佛山收资/exportmodel_pw/df8003/df8600/exportfiles/exportmodel_pw.xml");
|
eleReader.parse("D:/Project/佛山项目/佛山收资/exportmodel_pw/df8003/df8600/exportfiles/exportmodel_pw.xml");
|
||||||
RegexExtract regexExt;
|
// RegexExtract regexExt;
|
||||||
regexExt.extract("D:/Project/佛山项目/佛山收资/exportmodel_pw/df8003/df8600/exportfiles/exportmodel_pw.xml");
|
// regexExt.extract("D:/Project/佛山项目/佛山收资/exportmodel_pw/df8003/df8600/exportfiles/exportmodel_pw.xml");
|
||||||
regexExt.exportBlocks("ConnectivityNode.xml");
|
// regexExt.exportBlocks("ThermalGeneratingUnit.xml");
|
||||||
std::cout<<"Finished."<<std::endl;
|
std::cout<<"Finished."<<std::endl;
|
||||||
return a.exec();
|
return a.exec();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
INPUT(
|
||||||
|
./debug/main.o
|
||||||
|
./debug/elementhashtable.o
|
||||||
|
./debug/subcontrolarea.o
|
||||||
|
./debug/BasicElementInfo.o
|
||||||
|
./debug/regexextract.o
|
||||||
|
./debug/busbarsection.o
|
||||||
|
./debug/terminal.o
|
||||||
|
./debug/aclinesegment.o
|
||||||
|
./debug/breaker.o
|
||||||
|
./debug/compensator.o
|
||||||
|
./debug/disconnector.o
|
||||||
|
./debug/powertransformer.o
|
||||||
|
./debug/synchronousmachine.o
|
||||||
|
./debug/moc_elementhashtable.o
|
||||||
|
);
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
INPUT(
|
||||||
|
./release/main.o
|
||||||
|
./release/elementhashtable.o
|
||||||
|
./release/subcontrolarea.o
|
||||||
|
./release/BasicElementInfo.o
|
||||||
|
./release/regexextract.o
|
||||||
|
./release/busbarsection.o
|
||||||
|
./release/terminal.o
|
||||||
|
./release/aclinesegment.o
|
||||||
|
./release/breaker.o
|
||||||
|
./release/compensator.o
|
||||||
|
./release/disconnector.o
|
||||||
|
./release/powertransformer.o
|
||||||
|
./release/synchronousmachine.o
|
||||||
|
./release/moc_elementhashtable.o
|
||||||
|
);
|
||||||
|
|
@ -0,0 +1,38 @@
|
||||||
|
#include "powertransformer.h"
|
||||||
|
|
||||||
|
PowerTransformer::PowerTransformer()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool PowerTransformer::derivedParse(QXmlStreamReader &reader)
|
||||||
|
{
|
||||||
|
if(this->isTerminalA && "ConductingEquipment.Terminals"==reader.name() && reader.attributes().hasAttribute("rdf:resource"))
|
||||||
|
{
|
||||||
|
QString terminal;
|
||||||
|
terminal=reader.attributes().value("rdf:resource").toString();
|
||||||
|
this->terminalA=terminal.replace("#","").leftRef(-1);//返回整个字符串的Ref
|
||||||
|
qDebug()<<"got "<<"ConductingEquipment.Terminals "<<this->terminalA<<"\n";
|
||||||
|
this->isTerminalA=false;
|
||||||
|
}
|
||||||
|
if(!this->isTerminalA && "ConductingEquipment.Terminals"==reader.name() && reader.attributes().hasAttribute("rdf:resource"))
|
||||||
|
{
|
||||||
|
QString terminal;
|
||||||
|
terminal=reader.attributes().value("rdf:resource").toString();
|
||||||
|
this->terminalB=terminal.replace("#","").leftRef(-1);//返回整个字符串的Ref
|
||||||
|
qDebug()<<"got "<<"ConductingEquipment.Terminals "<<this->terminalB<<"\n";
|
||||||
|
}
|
||||||
|
if("Equipment.MemberOf_EquipmentContainer"==reader.name() && reader.attributes().hasAttribute("rdf:resource"))
|
||||||
|
{
|
||||||
|
QString ss;
|
||||||
|
ss=reader.attributes().value("rdf:resource").toString();
|
||||||
|
this->equipmentContainer=ss.replace("#","").leftRef(-1);//返回整个字符串的Ref
|
||||||
|
qDebug()<<"got "<<"Equipment.MemberOf_EquipmentContainer "<<this->equipmentContainer<<"\n";
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool PowerTransformer::parse(QXmlStreamReader &reader)
|
||||||
|
{
|
||||||
|
return this->parseBasicInfo(reader);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
#ifndef POWERTRANSFORMER_H
|
||||||
|
#define POWERTRANSFORMER_H
|
||||||
|
#include "BasicElementInfo.h"
|
||||||
|
#include <QXmlStreamReader>
|
||||||
|
class PowerTransformer:public BasicElementInfo
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
PowerTransformer();
|
||||||
|
virtual bool parse(QXmlStreamReader& reader);
|
||||||
|
protected:
|
||||||
|
QStringRef terminalA;
|
||||||
|
QStringRef terminalB;
|
||||||
|
QStringRef equipmentContainer;
|
||||||
|
virtual bool derivedParse(QXmlStreamReader& reader);
|
||||||
|
private:
|
||||||
|
bool isTerminalA;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // POWERTRANSFORMER_H
|
||||||
|
|
@ -36,14 +36,20 @@ bool RegexExtract::extract(const QString& xmlPath)
|
||||||
QString line;
|
QString line;
|
||||||
QString block;
|
QString block;
|
||||||
bool isInner=false;
|
bool isInner=false;
|
||||||
|
int lineNum=0;
|
||||||
if(file.open(QFile::ReadOnly))
|
if(file.open(QFile::ReadOnly))
|
||||||
{
|
{
|
||||||
QTextStream reader(&file);
|
QTextStream reader(&file);
|
||||||
while(!reader.atEnd())
|
while(!reader.atEnd())
|
||||||
{
|
{
|
||||||
line=reader.readLine();
|
line=reader.readLine();
|
||||||
|
lineNum++;
|
||||||
|
if(lineNum%100000==0)
|
||||||
|
{
|
||||||
|
std::cout<<lineNum<<std::endl;
|
||||||
|
}
|
||||||
// std::cout<<line.toStdString()<<std::endl;
|
// std::cout<<line.toStdString()<<std::endl;
|
||||||
if(!isInner && this->startsWith(line,"ConnectivityNode"))
|
if(!isInner && this->startsWith(line,"ThermalGeneratingUnit"))
|
||||||
{
|
{
|
||||||
block="";
|
block="";
|
||||||
isInner=true;
|
isInner=true;
|
||||||
|
|
@ -52,7 +58,7 @@ bool RegexExtract::extract(const QString& xmlPath)
|
||||||
{
|
{
|
||||||
block=block+line+QString("\n");
|
block=block+line+QString("\n");
|
||||||
}
|
}
|
||||||
if(isInner && this->endsWith(line,"ConnectivityNode"))
|
if(isInner && this->endsWith(line,"ThermalGeneratingUnit"))
|
||||||
{
|
{
|
||||||
isInner=false;
|
isInner=false;
|
||||||
this->blocks.push_back(block);
|
this->blocks.push_back(block);
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
#include "synchronousmachine.h"
|
||||||
|
|
||||||
|
SynchronousMachine::SynchronousMachine()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool SynchronousMachine::derivedParse(QXmlStreamReader &reader)
|
||||||
|
{
|
||||||
|
if("ConductingEquipment.Terminals"==reader.name() && reader.attributes().hasAttribute("rdf:resource"))
|
||||||
|
{
|
||||||
|
QString terminal;
|
||||||
|
terminal=reader.attributes().value("rdf:resource").toString();
|
||||||
|
this->terminal=terminal.replace("#","").leftRef(-1);//返回整个字符串的Ref
|
||||||
|
qDebug()<<"got "<<"ConductingEquipment.Terminals "<<this->terminal<<"\n";
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool SynchronousMachine::parse(QXmlStreamReader &reader)
|
||||||
|
{
|
||||||
|
return this->parseBasicInfo(reader);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
#ifndef SYNCHRONOUSMACHINE_H
|
||||||
|
#define SYNCHRONOUSMACHINE_H
|
||||||
|
#include <QXmlStreamReader>
|
||||||
|
#include "BasicElementInfo.h"
|
||||||
|
class SynchronousMachine:public BasicElementInfo
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
SynchronousMachine();
|
||||||
|
virtual bool parse(QXmlStreamReader& reader);
|
||||||
|
protected:
|
||||||
|
QStringRef terminal;
|
||||||
|
virtual bool derivedParse(QXmlStreamReader& reader);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // SYNCHRONOUSMACHINE_H
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
#include "terminal.h"
|
||||||
|
|
||||||
|
Terminal::Terminal()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Terminal::derivedParse(QXmlStreamReader& reader)
|
||||||
|
{
|
||||||
|
if("Terminal.ConnectivityNode"==reader.name() && reader.attributes().hasAttribute("rdf:resource"))
|
||||||
|
{
|
||||||
|
QString cn;
|
||||||
|
cn=reader.attributes().value("rdf:resource").toString();
|
||||||
|
this->connectivityNode=cn.replace("#","").leftRef(-1);//返回整个字符串的Ref
|
||||||
|
qDebug()<<"got "<<"Terminal.ConnectivityNode "<<this->connectivityNode<<"\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
if("Terminal.ConductingEquipment"==reader.name() && reader.attributes().hasAttribute("rdf:resource"))
|
||||||
|
{
|
||||||
|
QString ce;
|
||||||
|
ce=reader.attributes().value("rdf:resource").toString();
|
||||||
|
this->conductingEquipment=ce.replace("#","").leftRef(-1);//返回整个字符串的Ref
|
||||||
|
qDebug()<<"got "<<"Terminal.ConductingEquipment "<<this->conductingEquipment<<"\n";
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Terminal::parse(QXmlStreamReader& reader)
|
||||||
|
{
|
||||||
|
return this->parseBasicInfo(reader);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
#ifndef TERMINAL_H
|
||||||
|
#define TERMINAL_H
|
||||||
|
#include <QXmlStreamReader>
|
||||||
|
#include "BasicElementInfo.h"
|
||||||
|
class Terminal:public BasicElementInfo
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Terminal();
|
||||||
|
virtual bool parse(QXmlStreamReader& reader);
|
||||||
|
protected:
|
||||||
|
virtual bool derivedParse(QXmlStreamReader& reader);
|
||||||
|
QStringRef conductingEquipment;
|
||||||
|
QStringRef connectivityNode;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // TERMINAL_H
|
||||||
|
|
@ -20,13 +20,29 @@ SOURCES += main.cpp \
|
||||||
elementhashtable.cpp \
|
elementhashtable.cpp \
|
||||||
subcontrolarea.cpp \
|
subcontrolarea.cpp \
|
||||||
BasicElementInfo.cpp \
|
BasicElementInfo.cpp \
|
||||||
regexextract.cpp
|
regexextract.cpp \
|
||||||
|
busbarsection.cpp \
|
||||||
|
terminal.cpp \
|
||||||
|
aclinesegment.cpp \
|
||||||
|
breaker.cpp \
|
||||||
|
compensator.cpp \
|
||||||
|
disconnector.cpp \
|
||||||
|
powertransformer.cpp \
|
||||||
|
synchronousmachine.cpp
|
||||||
|
|
||||||
HEADERS += \
|
HEADERS += \
|
||||||
elementhashtable.h \
|
elementhashtable.h \
|
||||||
BasicElementInfo.h \
|
BasicElementInfo.h \
|
||||||
subcontrolarea.h \
|
subcontrolarea.h \
|
||||||
regexextract.h
|
regexextract.h \
|
||||||
|
busbarsection.h \
|
||||||
|
terminal.h \
|
||||||
|
aclinesegment.h \
|
||||||
|
breaker.h \
|
||||||
|
compensator.h \
|
||||||
|
disconnector.h \
|
||||||
|
powertransformer.h \
|
||||||
|
synchronousmachine.h
|
||||||
|
|
||||||
#release{
|
#release{
|
||||||
#DEFINES += QT_NO_DEBUG_OUTPUT
|
#DEFINES += QT_NO_DEBUG_OUTPUT
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue