#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=="BusbarSection") { pointer=new BusbarSection; pointer->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) { 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")//不要读