bool XMLfile::importFromXML () { //Ejemplo: <importfrom xml="eutibot.xml" element="euitibot" name="Robot1"> string name; if (root->FindElementZ("importfrom")) { XMLElement* import=root->FindElementZ("importfrom"); if (import->FindVariableZ("xml")) { name=XMLAux::GetValueCadena(import->FindVariableZ("xml")); XML* xmlImport = new XML(name.c_str()); XMLElement* rootImport = xmlImport->GetRootElement(); if (import->FindVariableZ("element")) { name=string(); name=XMLAux::GetValueCadena(import->FindVariableZ("element")); if (rootImport->FindElementZ(name.c_str())) { imported=rootImport->FindElementZ(name.c_str())->Duplicate(); if (import->FindVariableZ("name")) { name=string(); name=XMLAux::GetValueCadena(import->FindVariableZ("name")); if (imported->FindVariableZ("name")) imported->FindVariableZ("name")->SetValue(name.c_str()); else { XMLVariable* _name=new XMLVariable ("name",name.c_str()); imported->AddVariable(_name); } } return true; } else //search the XMLElement in another deep just in case { int num=rootImport->GetAllChildrenNum(); XMLElement** childsImport=new XMLElement*[num]; rootImport->GetAllChildren(childsImport); for (int i=0;i<num;i++) { if (childsImport[i]->FindElementZ(name.c_str())) { imported=childsImport[i]->FindElementZ(name.c_str())->Duplicate(); if (import->FindVariableZ("name")) { name=string(); name=XMLAux::GetValueCadena(import->FindVariableZ("name")); if (imported->FindVariableZ("name")) imported->FindVariableZ("name")->SetValue(name.c_str()); else { XMLVariable* _name=new XMLVariable ("name",name.c_str()); imported->AddVariable(_name); } } return true; } } } } } } return false; }