public TransformationModel XmlToObject(string xmlPath)
        {
            XDocument doc = XDocument.Load(xmlPath);

            var ChainObj          = new TransformationModel(XmlEnum.Transformation);
            var processingStepObj = new ProcessingStepsModel(XmlEnum.ProcessingSteps);

            var processingSteps = doc.Descendants("Map");

            foreach (var step in processingSteps)
            {
                var MapObj       = new MapModel(XmlEnum.Map);
                var BasObj       = new CodeModulePathModel(XmlEnum.CodeModulePath);
                var BasesObj     = new CodeModulesModel(XmlEnum.CodeModules);
                var VariableObj  = new VariableModel(XmlEnum.TransformationVariables);
                var VariablesObj = new TransformationVariablesModel(XmlEnum.TransformationVariables);

                var Bas = step.Descendants("CodeModules");
                foreach (var b in Bas)
                {
                    BasObj.AddCodeModulePathModel(XmlEnum.CodeModulePath,
                                                  b.Element("CodeModulePath").Attribute("Location").Value);
                    BasesObj.AddCodeModule(BasObj);
                }

                var TransformationVariables = step.Descendants("TransformationVariables").Elements("Variable");
                foreach (var v in TransformationVariables)
                {
                    VariableObj.AddVariable(XmlEnum.Variable,
                                            v.Attribute("Value").Value,
                                            v.Attribute("IsPublic").Value,
                                            v.Attribute("InitialValue").Value);
                    VariablesObj.AddVariable(VariableObj);
                }

                MapObj.AddMap(XmlEnum.Map,
                              step.Attribute("Sequence").Value,
                              step.Attribute("Name").Value,
                              step.Element("MapFilePath").Attribute("Location").Value,
                              step.Element("SourceFilePath").Attribute("Location").Value,
                              step.Element("TargetFilePath").Attribute("Location").Value,
                              BasesObj,
                              VariablesObj);

                processingStepObj.AddMap(MapObj);
            }

            var Chain = doc.Descendants("Transformation");

            foreach (var t in Chain)
            {
                ChainObj.AddTransformationModel(XmlEnum.Transformation,
                                                t.Attribute("createdon").Value,
                                                t.Attribute("createdby").Value,
                                                processingStepObj);
            }
            return(ChainObj);
        }