#include "elementhashtable.h" #include ElementHashtable::ElementHashtable(QObject *parent) : QObject(parent) { } bool ElementHashtable::child(QXmlStreamReader &reader) { QStringRef elementName; elementName=reader.name(); QString id; if(reader.attributes().hasAttribute("rdf:ID")) { id=reader.attributes().value("rdf:ID").toString(); } BasicElementInfo *pointer=NULL; if(elementName=="BusbarSection") { pointer=new BusbarSection(this); pointer->parse(reader); } if(elementName=="Terminal") { pointer=new Terminal(this); pointer->parse(reader); } if(elementName=="ACLineSegment") { pointer=new ACLineSegment(this); pointer->parse(reader); } if(elementName=="Breaker") { pointer=new Breaker(this); pointer->parse(reader); } if(elementName=="Compensator") { pointer=new Compensator(this); pointer->parse(reader); } if(elementName=="Disconnector") { pointer=new Disconnector(this); pointer->parse(reader); } if(elementName=="PowerTransformer") { pointer=new PowerTransformer(this); pointer->parse(reader); } if(elementName=="SynchronousMachine") { pointer=new SynchronousMachine(this); pointer->parse(reader); } if(pointer && id!="") { this->eleHT[id]=pointer; } return true; } bool ElementHashtable::goPath() { const QHash &ht=this->eleHT; QList keys; keys=ht.keys(); std::cout<::Iterator ite=keys.begin(); ite!=keys.end(); ite++) { BasicElementInfo *p=ht[*ite]; if(p->getName()=="BusbarSection") { // std::cout<<"BusbarSection"<<"\n"; BusbarSection *foo=static_cast(p); QString terminal=foo->getTerminal(); //找Terminal的东西 Terminal *terminalP=static_cast(ht[terminal]); std::cout<getID().toStdString()<getConductingEquipment().toStdString()<