@@ -11,52 +11,88 @@ 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;
|
||||
pointer=new BusbarSection(this);
|
||||
pointer->parse(reader);
|
||||
}
|
||||
if(elementName=="Terminal")
|
||||
{
|
||||
pointer=new Terminal;
|
||||
pointer=new Terminal(this);
|
||||
pointer->parse(reader);
|
||||
}
|
||||
if(elementName=="ACLineSegment")
|
||||
{
|
||||
pointer=new ACLineSegment;
|
||||
pointer=new ACLineSegment(this);
|
||||
pointer->parse(reader);
|
||||
}
|
||||
if(elementName=="Breaker")
|
||||
{
|
||||
pointer=new Breaker;
|
||||
pointer=new Breaker(this);
|
||||
pointer->parse(reader);
|
||||
}
|
||||
if(elementName=="Compensator")
|
||||
{
|
||||
pointer=new Compensator;
|
||||
pointer=new Compensator(this);
|
||||
pointer->parse(reader);
|
||||
}
|
||||
if(elementName=="Disconnector")
|
||||
{
|
||||
pointer=new Disconnector;
|
||||
pointer=new Disconnector(this);
|
||||
pointer->parse(reader);
|
||||
}
|
||||
if(elementName=="PowerTransformer")
|
||||
{
|
||||
pointer=new PowerTransformer;
|
||||
pointer=new PowerTransformer(this);
|
||||
pointer->parse(reader);
|
||||
}
|
||||
if(elementName=="SynchronousMachine")
|
||||
{
|
||||
pointer=new SynchronousMachine;
|
||||
pointer=new SynchronousMachine(this);
|
||||
pointer->parse(reader);
|
||||
}
|
||||
|
||||
|
||||
if(pointer)
|
||||
if(pointer && id!="")
|
||||
{
|
||||
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;
|
||||
}
|
||||
@@ -78,15 +114,17 @@ bool ElementHashtable::parse(const QString& xmlPath)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
this->child(reader);//处理根元素下的第一级子元素,也就是Substation这一类。
|
||||
}
|
||||
loop++;
|
||||
if(loop>20){
|
||||
if(loop>600000){
|
||||
// break;
|
||||
}
|
||||
|
||||
}
|
||||
// const QHash<QString,BasicElementInfo*> &ht=this->eleHT;
|
||||
// std::cout<<ht["AC-1300969"]->getName().toString().toStdString()<<std::endl;
|
||||
|
||||
if(reader.hasError())
|
||||
{
|
||||
qDebug()<<reader.errorString()<<"\n";
|
||||
|
||||
Reference in New Issue
Block a user