不是用QStringRef,太容易出错。

Signed-off-by: facat@lab.com <facat@lab.com>
This commit is contained in:
facat@lab.com 2014-11-24 22:01:30 +08:00
parent 407fe62995
commit 8bb30a0940
24 changed files with 128 additions and 71 deletions

View File

@ -1,7 +1,7 @@
#include "BasicElementInfo.h" #include "BasicElementInfo.h"
//#include <iostream> #include <iostream>
BasicElementInfo::BasicElementInfo() BasicElementInfo::BasicElementInfo(QObject *parent)
{ {
} }
@ -12,6 +12,16 @@ bool BasicElementInfo::derivedParse(QXmlStreamReader& reader)
return true; return true;
} }
QString BasicElementInfo::getID()
{
return this->id;
}
QString BasicElementInfo::getName()
{
return this->name;
}
bool BasicElementInfo::parse(QXmlStreamReader &reader) bool BasicElementInfo::parse(QXmlStreamReader &reader)
{ {
return true; return true;
@ -19,10 +29,11 @@ bool BasicElementInfo::parse(QXmlStreamReader &reader)
bool BasicElementInfo::parseBasicInfo(QXmlStreamReader &reader) bool BasicElementInfo::parseBasicInfo(QXmlStreamReader &reader)
{ {
// std::cout<<"father"<<"\n";
QStringRef elementName; QStringRef elementName;
QStringRef id; QStringRef id;
elementName=reader.name(); elementName=reader.name();
this->name=elementName.toString();
this->id=id.toString();
qDebug()<<reader.name()<<"\n"; qDebug()<<reader.name()<<"\n";
if(reader.attributes().hasAttribute("rdf:ID")) if(reader.attributes().hasAttribute("rdf:ID"))
{ {
@ -33,14 +44,12 @@ bool BasicElementInfo::parseBasicInfo(QXmlStreamReader &reader)
while(!reader.atEnd() && !reader.hasError()) while(!reader.atEnd() && !reader.hasError())
{ {
reader.readNext(); reader.readNext();
elementName=reader.name();
this->derivedParse(reader); this->derivedParse(reader);
if(reader.isEndElement() && reader.name()==elementName) if(reader.isEndElement() && reader.name()==elementName)
{ {
break; break;
} }
} }
this->name=elementName;
this->id=id;
return true; return true;
} }

View File

@ -2,19 +2,22 @@
#define BASICELEMENTINFO_H #define BASICELEMENTINFO_H
#include <QString> #include <QString>
#include <QStringRef>
#include <QXmlStreamReader> #include <QXmlStreamReader>
#include <QDebug> #include <QDebug>
#include <QObject>
class BasicElementInfo; class BasicElementInfo;
//typedef bool (BasicElementInfo::*derivedParseHandle)(QXmlStreamReader &reader); //typedef bool (BasicElementInfo::*derivedParseHandle)(QXmlStreamReader &reader);
class BasicElementInfo{ class BasicElementInfo:public QObject{
Q_OBJECT
public: public:
BasicElementInfo(); explicit BasicElementInfo(QObject *parent = 0);
virtual bool parse(QXmlStreamReader &reader); virtual bool parse(QXmlStreamReader &reader);
QString getID();
QString getName();
protected: protected:
bool parseBasicInfo(QXmlStreamReader &reader); bool parseBasicInfo(QXmlStreamReader &reader);
QStringRef name; QString name;
QStringRef id; QString id;
// derivedParseHandle derivedParse; // derivedParseHandle derivedParse;
virtual bool derivedParse(QXmlStreamReader &reader); virtual bool derivedParse(QXmlStreamReader &reader);

View File

@ -1,6 +1,6 @@
#include "aclinesegment.h" #include "aclinesegment.h"
ACLineSegment::ACLineSegment():isTerminalA(true) ACLineSegment::ACLineSegment(QObject *parent):BasicElementInfo(parent),isTerminalA(true)
{ {
} }

View File

@ -4,7 +4,7 @@
class ACLineSegment:public BasicElementInfo class ACLineSegment:public BasicElementInfo
{ {
public: public:
ACLineSegment(); explicit ACLineSegment(QObject *parent = 0);
virtual bool parse(QXmlStreamReader &reader); virtual bool parse(QXmlStreamReader &reader);
protected: protected:
QStringRef terminalA; QStringRef terminalA;

View File

@ -1,6 +1,6 @@
#include "breaker.h" #include "breaker.h"
Breaker::Breaker() Breaker::Breaker(QObject *parent):BasicElementInfo(parent)
{ {
} }
@ -10,7 +10,7 @@ bool Breaker::derivedParse(QXmlStreamReader &reader)
{ {
QString terminal; QString terminal;
terminal=reader.attributes().value("rdf:resource").toString(); terminal=reader.attributes().value("rdf:resource").toString();
this->terminalA=terminal.replace("#","").leftRef(-1);//返回整个字符串的Ref this->terminalA=terminal.replace("#","").leftRef(-1).toString();//返回整个字符串的Ref
qDebug()<<"got "<<"ConductingEquipment.Terminals "<<this->terminalA<<"\n"; qDebug()<<"got "<<"ConductingEquipment.Terminals "<<this->terminalA<<"\n";
this->isTerminalA=false; this->isTerminalA=false;
} }
@ -18,14 +18,14 @@ bool Breaker::derivedParse(QXmlStreamReader &reader)
{ {
QString terminal; QString terminal;
terminal=reader.attributes().value("rdf:resource").toString(); terminal=reader.attributes().value("rdf:resource").toString();
this->terminalB=terminal.replace("#","").leftRef(-1);//返回整个字符串的Ref this->terminalB=terminal.replace("#","").leftRef(-1).toString();//返回整个字符串的Ref
qDebug()<<"got "<<"ConductingEquipment.Terminals "<<this->terminalB<<"\n"; qDebug()<<"got "<<"ConductingEquipment.Terminals "<<this->terminalB<<"\n";
} }
if("Equipment.MemberOf_EquipmentContainer"==reader.name() && reader.attributes().hasAttribute("rdf:resource")) if("Equipment.MemberOf_EquipmentContainer"==reader.name() && reader.attributes().hasAttribute("rdf:resource"))
{ {
QString ss; QString ss;
ss=reader.attributes().value("rdf:resource").toString(); ss=reader.attributes().value("rdf:resource").toString();
this->equipmentContainer=ss.replace("#","").leftRef(-1);//返回整个字符串的Ref this->equipmentContainer=ss.replace("#","").leftRef(-1).toString();//返回整个字符串的Ref
qDebug()<<"got "<<"Equipment.MemberOf_EquipmentContainer "<<this->equipmentContainer<<"\n"; qDebug()<<"got "<<"Equipment.MemberOf_EquipmentContainer "<<this->equipmentContainer<<"\n";
} }
return true; return true;

View File

@ -5,12 +5,12 @@
class Breaker:public BasicElementInfo class Breaker:public BasicElementInfo
{ {
public: public:
Breaker(); explicit Breaker(QObject *parent = 0);
virtual bool parse(QXmlStreamReader& reader); virtual bool parse(QXmlStreamReader& reader);
protected: protected:
QStringRef terminalA; QString terminalA;
QStringRef terminalB; QString terminalB;
QStringRef equipmentContainer; QString equipmentContainer;
virtual bool derivedParse(QXmlStreamReader& reader); virtual bool derivedParse(QXmlStreamReader& reader);
private: private:
bool isTerminalA; bool isTerminalA;

View File

@ -1,6 +1,6 @@
#include "busbarsection.h" #include "busbarsection.h"
#include <iostream>
BusbarSection::BusbarSection() BusbarSection::BusbarSection(QObject *parent):BasicElementInfo(parent)
{ {
} }
@ -11,7 +11,7 @@ bool BusbarSection::derivedParse(QXmlStreamReader& reader)
{ {
QString terminal; QString terminal;
terminal=reader.attributes().value("rdf:resource").toString(); terminal=reader.attributes().value("rdf:resource").toString();
this->terminal=terminal.replace("#","").leftRef(-1);//返回整个字符串的Ref this->terminal=terminal.replace("#","").leftRef(-1).toString();//返回整个字符串的Ref
qDebug()<<"got "<<"ConductingEquipment.Terminals "<<this->terminal<<"\n"; qDebug()<<"got "<<"ConductingEquipment.Terminals "<<this->terminal<<"\n";
} }
return true; return true;
@ -19,5 +19,7 @@ bool BusbarSection::derivedParse(QXmlStreamReader& reader)
bool BusbarSection::parse(QXmlStreamReader& reader) bool BusbarSection::parse(QXmlStreamReader& reader)
{ {
// std::cout<<"BusbarSection"<<std::endl;
return this->parseBasicInfo(reader); return this->parseBasicInfo(reader);
} }

View File

@ -5,10 +5,10 @@
class BusbarSection:public BasicElementInfo class BusbarSection:public BasicElementInfo
{ {
public: public:
BusbarSection(); explicit BusbarSection(QObject *parent = 0);
virtual bool parse(QXmlStreamReader& reader); virtual bool parse(QXmlStreamReader& reader);
protected: protected:
QStringRef terminal; QString terminal;
virtual bool derivedParse(QXmlStreamReader& reader); virtual bool derivedParse(QXmlStreamReader& reader);
}; };

View File

@ -1,6 +1,6 @@
#include "compensator.h" #include "compensator.h"
Compensator::Compensator() Compensator::Compensator(QObject *parent):BasicElementInfo(parent)
{ {
} }
@ -11,7 +11,7 @@ bool Compensator::derivedParse(QXmlStreamReader &reader)
{ {
QString terminal; QString terminal;
terminal=reader.attributes().value("rdf:resource").toString(); terminal=reader.attributes().value("rdf:resource").toString();
this->terminal=terminal.replace("#","").leftRef(-1);//返回整个字符串的Ref this->terminal=terminal.replace("#","").leftRef(-1).toString();//返回整个字符串的Ref
qDebug()<<"got "<<"ConductingEquipment.Terminals "<<this->terminal<<"\n"; qDebug()<<"got "<<"ConductingEquipment.Terminals "<<this->terminal<<"\n";
} }
return true; return true;

View File

@ -5,12 +5,12 @@
class Compensator:public BasicElementInfo class Compensator:public BasicElementInfo
{ {
public: public:
Compensator(); explicit Compensator(QObject *parent = 0);
virtual bool parse(QXmlStreamReader& reader); virtual bool parse(QXmlStreamReader& reader);
protected: protected:
virtual bool derivedParse(QXmlStreamReader& reader); virtual bool derivedParse(QXmlStreamReader& reader);
private: private:
QStringRef terminal; QString terminal;
}; };
#endif // COMPENSATOR_H #endif // COMPENSATOR_H

View File

@ -1,6 +1,6 @@
#include "disconnector.h" #include "disconnector.h"
Disconnector::Disconnector() Disconnector::Disconnector(QObject *parent):BasicElementInfo(parent)
{ {
} }
@ -11,7 +11,7 @@ bool Disconnector::derivedParse(QXmlStreamReader &reader)
{ {
QString terminal; QString terminal;
terminal=reader.attributes().value("rdf:resource").toString(); terminal=reader.attributes().value("rdf:resource").toString();
this->terminalA=terminal.replace("#","").leftRef(-1);//返回整个字符串的Ref this->terminalA=terminal.replace("#","").leftRef(-1).toString();//返回整个字符串的Ref
qDebug()<<"got "<<"ConductingEquipment.Terminals "<<this->terminalA<<"\n"; qDebug()<<"got "<<"ConductingEquipment.Terminals "<<this->terminalA<<"\n";
this->isTerminalA=false; this->isTerminalA=false;
} }
@ -19,14 +19,14 @@ bool Disconnector::derivedParse(QXmlStreamReader &reader)
{ {
QString terminal; QString terminal;
terminal=reader.attributes().value("rdf:resource").toString(); terminal=reader.attributes().value("rdf:resource").toString();
this->terminalB=terminal.replace("#","").leftRef(-1);//返回整个字符串的Ref this->terminalB=terminal.replace("#","").leftRef(-1).toString();//返回整个字符串的Ref
qDebug()<<"got "<<"ConductingEquipment.Terminals "<<this->terminalB<<"\n"; qDebug()<<"got "<<"ConductingEquipment.Terminals "<<this->terminalB<<"\n";
} }
if("Equipment.MemberOf_EquipmentContainer"==reader.name() && reader.attributes().hasAttribute("rdf:resource")) if("Equipment.MemberOf_EquipmentContainer"==reader.name() && reader.attributes().hasAttribute("rdf:resource"))
{ {
QString ss; QString ss;
ss=reader.attributes().value("rdf:resource").toString(); ss=reader.attributes().value("rdf:resource").toString();
this->equipmentContainer=ss.replace("#","").leftRef(-1);//返回整个字符串的Ref this->equipmentContainer=ss.replace("#","").leftRef(-1).toString();//返回整个字符串的Ref
qDebug()<<"got "<<"Equipment.MemberOf_EquipmentContainer "<<this->equipmentContainer<<"\n"; qDebug()<<"got "<<"Equipment.MemberOf_EquipmentContainer "<<this->equipmentContainer<<"\n";
} }
return true; return true;

View File

@ -5,12 +5,12 @@
class Disconnector:public BasicElementInfo class Disconnector:public BasicElementInfo
{ {
public: public:
Disconnector(); explicit Disconnector(QObject *parent = 0);
virtual bool parse(QXmlStreamReader& reader); virtual bool parse(QXmlStreamReader& reader);
protected: protected:
QStringRef terminalA; QString terminalA;
QStringRef terminalB; QString terminalB;
QStringRef equipmentContainer; QString equipmentContainer;
virtual bool derivedParse(QXmlStreamReader& reader); virtual bool derivedParse(QXmlStreamReader& reader);
private: private:
bool isTerminalA; bool isTerminalA;

View File

@ -11,52 +11,88 @@ bool ElementHashtable::child(QXmlStreamReader &reader)
QStringRef elementName; QStringRef elementName;
elementName=reader.name(); elementName=reader.name();
QString id;
if(reader.attributes().hasAttribute("rdf:ID"))
{
id=reader.attributes().value("rdf:ID").toString();
}
BasicElementInfo *pointer=NULL; BasicElementInfo *pointer=NULL;
if(elementName=="BusbarSection") if(elementName=="BusbarSection")
{ {
pointer=new BusbarSection; pointer=new BusbarSection(this);
pointer->parse(reader); pointer->parse(reader);
} }
if(elementName=="Terminal") if(elementName=="Terminal")
{ {
pointer=new Terminal; pointer=new Terminal(this);
pointer->parse(reader); pointer->parse(reader);
} }
if(elementName=="ACLineSegment") if(elementName=="ACLineSegment")
{ {
pointer=new ACLineSegment; pointer=new ACLineSegment(this);
pointer->parse(reader); pointer->parse(reader);
} }
if(elementName=="Breaker") if(elementName=="Breaker")
{ {
pointer=new Breaker; pointer=new Breaker(this);
pointer->parse(reader); pointer->parse(reader);
} }
if(elementName=="Compensator") if(elementName=="Compensator")
{ {
pointer=new Compensator; pointer=new Compensator(this);
pointer->parse(reader); pointer->parse(reader);
} }
if(elementName=="Disconnector") if(elementName=="Disconnector")
{ {
pointer=new Disconnector; pointer=new Disconnector(this);
pointer->parse(reader); pointer->parse(reader);
} }
if(elementName=="PowerTransformer") if(elementName=="PowerTransformer")
{ {
pointer=new PowerTransformer; pointer=new PowerTransformer(this);
pointer->parse(reader); pointer->parse(reader);
} }
if(elementName=="SynchronousMachine") if(elementName=="SynchronousMachine")
{ {
pointer=new SynchronousMachine; pointer=new SynchronousMachine(this);
pointer->parse(reader); pointer->parse(reader);
} }
if(pointer && id!="")
if(pointer)
{ {
this->eleHT[elementName.toString()]=*pointer; if(this->eleHT.contains(id))
{
std::cout<<"contain"<<std::endl;
}
this->eleHT[id]=pointer;
// std::cout<<id.toStdString()<<std::endl;
// std::cout<<this->eleHT[id]->getName().toStdString()<<std::endl;
}
else
{
// std::cout<<elementName.toString().toStdString()<<std::endl;
}
return true;
}
bool ElementHashtable::goPath()
{
const QHash<QString,BasicElementInfo*> &ht=this->eleHT;
QList<QString> keys;
keys=ht.keys();
std::cout<<keys.length()<<std::endl;
for(QList<QString>::Iterator ite=keys.begin();
ite!=keys.end();
ite++)
{
// std::cout<<ite->toStdString()<<std::endl;
BasicElementInfo *p=ht[*ite];
// std::cout<<p->getName().toStdString()<<std::endl;
if(p->getName()=="BusbarSection")
{
std::cout<<"BusbarSection"<<"\n";
}
} }
return true; return true;
} }
@ -78,15 +114,17 @@ bool ElementHashtable::parse(const QString& xmlPath)
{ {
continue; continue;
} }
this->child(reader);//处理根元素下的第一级子元素也就是Substation这一类。 this->child(reader);//处理根元素下的第一级子元素也就是Substation这一类。
} }
loop++; loop++;
if(loop>20){ if(loop>600000){
// break; // break;
} }
} }
// const QHash<QString,BasicElementInfo*> &ht=this->eleHT;
// std::cout<<ht["AC-1300969"]->getName().toString().toStdString()<<std::endl;
if(reader.hasError()) if(reader.hasError())
{ {
qDebug()<<reader.errorString()<<"\n"; qDebug()<<reader.errorString()<<"\n";

View File

@ -23,9 +23,10 @@ class ElementHashtable : public QObject
public: public:
explicit ElementHashtable(QObject *parent = 0); explicit ElementHashtable(QObject *parent = 0);
bool parse(const QString& xmlPath); bool parse(const QString& xmlPath);
bool goPath();
private: private:
bool child(QXmlStreamReader &reader); bool child(QXmlStreamReader &reader);
QHash<QString,BasicElementInfo> eleHT; QHash<QString,BasicElementInfo *> eleHT;
signals: signals:
public slots: public slots:

View File

@ -7,6 +7,8 @@ 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");
// eleReader.parse("D:/Project/佛山项目/佛山收资/按元素分/BusbarSectionb.xml");
eleReader.goPath();
// 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("ThermalGeneratingUnit.xml"); // regexExt.exportBlocks("ThermalGeneratingUnit.xml");

View File

@ -13,4 +13,5 @@ INPUT(
./debug/powertransformer.o ./debug/powertransformer.o
./debug/synchronousmachine.o ./debug/synchronousmachine.o
./debug/moc_elementhashtable.o ./debug/moc_elementhashtable.o
./debug/moc_BasicElementInfo.o
); );

View File

@ -13,4 +13,5 @@ INPUT(
./release/powertransformer.o ./release/powertransformer.o
./release/synchronousmachine.o ./release/synchronousmachine.o
./release/moc_elementhashtable.o ./release/moc_elementhashtable.o
./release/moc_BasicElementInfo.o
); );

View File

@ -1,6 +1,6 @@
#include "powertransformer.h" #include "powertransformer.h"
PowerTransformer::PowerTransformer() PowerTransformer::PowerTransformer(QObject *parent):BasicElementInfo(parent)
{ {
} }
@ -11,7 +11,7 @@ bool PowerTransformer::derivedParse(QXmlStreamReader &reader)
{ {
QString terminal; QString terminal;
terminal=reader.attributes().value("rdf:resource").toString(); terminal=reader.attributes().value("rdf:resource").toString();
this->terminalA=terminal.replace("#","").leftRef(-1);//返回整个字符串的Ref this->terminalA=terminal.replace("#","").leftRef(-1).toString();//返回整个字符串的Ref
qDebug()<<"got "<<"ConductingEquipment.Terminals "<<this->terminalA<<"\n"; qDebug()<<"got "<<"ConductingEquipment.Terminals "<<this->terminalA<<"\n";
this->isTerminalA=false; this->isTerminalA=false;
} }
@ -19,14 +19,14 @@ bool PowerTransformer::derivedParse(QXmlStreamReader &reader)
{ {
QString terminal; QString terminal;
terminal=reader.attributes().value("rdf:resource").toString(); terminal=reader.attributes().value("rdf:resource").toString();
this->terminalB=terminal.replace("#","").leftRef(-1);//返回整个字符串的Ref this->terminalB=terminal.replace("#","").leftRef(-1).toString();//返回整个字符串的Ref
qDebug()<<"got "<<"ConductingEquipment.Terminals "<<this->terminalB<<"\n"; qDebug()<<"got "<<"ConductingEquipment.Terminals "<<this->terminalB<<"\n";
} }
if("Equipment.MemberOf_EquipmentContainer"==reader.name() && reader.attributes().hasAttribute("rdf:resource")) if("Equipment.MemberOf_EquipmentContainer"==reader.name() && reader.attributes().hasAttribute("rdf:resource"))
{ {
QString ss; QString ss;
ss=reader.attributes().value("rdf:resource").toString(); ss=reader.attributes().value("rdf:resource").toString();
this->equipmentContainer=ss.replace("#","").leftRef(-1);//返回整个字符串的Ref this->equipmentContainer=ss.replace("#","").leftRef(-1).toString();//返回整个字符串的Ref
qDebug()<<"got "<<"Equipment.MemberOf_EquipmentContainer "<<this->equipmentContainer<<"\n"; qDebug()<<"got "<<"Equipment.MemberOf_EquipmentContainer "<<this->equipmentContainer<<"\n";
} }
return true; return true;

View File

@ -5,12 +5,12 @@
class PowerTransformer:public BasicElementInfo class PowerTransformer:public BasicElementInfo
{ {
public: public:
PowerTransformer(); explicit PowerTransformer(QObject *parent = 0);
virtual bool parse(QXmlStreamReader& reader); virtual bool parse(QXmlStreamReader& reader);
protected: protected:
QStringRef terminalA; QString terminalA;
QStringRef terminalB; QString terminalB;
QStringRef equipmentContainer; QString equipmentContainer;
virtual bool derivedParse(QXmlStreamReader& reader); virtual bool derivedParse(QXmlStreamReader& reader);
private: private:
bool isTerminalA; bool isTerminalA;

View File

@ -1,6 +1,6 @@
#include "synchronousmachine.h" #include "synchronousmachine.h"
SynchronousMachine::SynchronousMachine() SynchronousMachine::SynchronousMachine(QObject *parent):BasicElementInfo(parent)
{ {
} }
@ -10,7 +10,7 @@ bool SynchronousMachine::derivedParse(QXmlStreamReader &reader)
{ {
QString terminal; QString terminal;
terminal=reader.attributes().value("rdf:resource").toString(); terminal=reader.attributes().value("rdf:resource").toString();
this->terminal=terminal.replace("#","").leftRef(-1);//返回整个字符串的Ref this->terminal=terminal.replace("#","").leftRef(-1).toString();//返回整个字符串的Ref
qDebug()<<"got "<<"ConductingEquipment.Terminals "<<this->terminal<<"\n"; qDebug()<<"got "<<"ConductingEquipment.Terminals "<<this->terminal<<"\n";
} }
return true; return true;

View File

@ -5,10 +5,10 @@
class SynchronousMachine:public BasicElementInfo class SynchronousMachine:public BasicElementInfo
{ {
public: public:
SynchronousMachine(); explicit SynchronousMachine(QObject *parent = 0);
virtual bool parse(QXmlStreamReader& reader); virtual bool parse(QXmlStreamReader& reader);
protected: protected:
QStringRef terminal; QString terminal;
virtual bool derivedParse(QXmlStreamReader& reader); virtual bool derivedParse(QXmlStreamReader& reader);
}; };

View File

@ -1,6 +1,6 @@
#include "terminal.h" #include "terminal.h"
Terminal::Terminal() Terminal::Terminal(QObject *parent):BasicElementInfo(parent)
{ {
} }
@ -10,7 +10,7 @@ bool Terminal::derivedParse(QXmlStreamReader& reader)
{ {
QString cn; QString cn;
cn=reader.attributes().value("rdf:resource").toString(); cn=reader.attributes().value("rdf:resource").toString();
this->connectivityNode=cn.replace("#","").leftRef(-1);//返回整个字符串的Ref this->connectivityNode=cn.replace("#","").leftRef(-1).toString();//返回整个字符串的Ref
qDebug()<<"got "<<"Terminal.ConnectivityNode "<<this->connectivityNode<<"\n"; qDebug()<<"got "<<"Terminal.ConnectivityNode "<<this->connectivityNode<<"\n";
} }
@ -18,7 +18,7 @@ bool Terminal::derivedParse(QXmlStreamReader& reader)
{ {
QString ce; QString ce;
ce=reader.attributes().value("rdf:resource").toString(); ce=reader.attributes().value("rdf:resource").toString();
this->conductingEquipment=ce.replace("#","").leftRef(-1);//返回整个字符串的Ref this->conductingEquipment=ce.replace("#","").leftRef(-1).toString();//返回整个字符串的Ref
qDebug()<<"got "<<"Terminal.ConductingEquipment "<<this->conductingEquipment<<"\n"; qDebug()<<"got "<<"Terminal.ConductingEquipment "<<this->conductingEquipment<<"\n";
} }
return true; return true;

View File

@ -5,12 +5,12 @@
class Terminal:public BasicElementInfo class Terminal:public BasicElementInfo
{ {
public: public:
Terminal(); explicit Terminal(QObject *parent = 0);
virtual bool parse(QXmlStreamReader& reader); virtual bool parse(QXmlStreamReader& reader);
protected: protected:
virtual bool derivedParse(QXmlStreamReader& reader); virtual bool derivedParse(QXmlStreamReader& reader);
QStringRef conductingEquipment; QString conductingEquipment;
QStringRef connectivityNode; QString connectivityNode;
}; };
#endif // TERMINAL_H #endif // TERMINAL_H

View File

@ -45,5 +45,5 @@ HEADERS += \
synchronousmachine.h synchronousmachine.h
#release{ #release{
#DEFINES += QT_NO_DEBUG_OUTPUT DEFINES += QT_NO_DEBUG_OUTPUT
#} #}