コード例 #1
0
ファイル: xmlfile.cpp プロジェクト: drodri/MRCore
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;
}