public static bool UpdateByXML(UserModel p, string xmlFilename)
        {
            GenericPropertyFinder <UserModel> objGenericPropertyFinder = new GenericPropertyFinder <UserModel>();
            var lstDic = objGenericPropertyFinder.ReturTModelPropertyAndValue(p);

            XDocument xdoc = XDocument.Load(xmlFilename);

            xdoc.Declaration = new XDeclaration("1.0", "utf-8", "yes");
            var elements = xdoc.Element("ArrayOfUserModel").Elements();

            var valueProdID = (from x in lstDic
                               where x.Key.Contains("Guid")
                               select x.Value).FirstOrDefault();

            foreach (var child in elements)
            {
                var elmId = child.Element("Guid");
                if (elmId.Value == valueProdID)
                {
                    foreach (var item in child.Elements())
                    {
                        if (item.Name == "_Role")
                        {
                            GenericPropertyFinder <RoleModel> objRole = new GenericPropertyFinder <RoleModel>();

                            var pItems = objRole.ReturTModelPropertyAndValue(p._Role);

                            foreach (var subItem in item.Elements())
                            {
                                var valueOf = (from x in pItems
                                               where x.Key.Contains(subItem.Name.ToString())
                                               select x.Value).FirstOrDefault();

                                subItem.SetValue(valueOf);
                            }
                        }
                        else if (item.Name == "Depto")
                        {
                            GenericPropertyFinder <DeptoModel> objDepto = new GenericPropertyFinder <DeptoModel>();

                            var pItems = objDepto.ReturTModelPropertyAndValue(p.Depto);

                            foreach (var subItem in item.Elements())
                            {
                                var valueOf = (from x in pItems
                                               where x.Key.Contains(subItem.Name.ToString())
                                               select x.Value).FirstOrDefault();

                                subItem.SetValue(valueOf);
                            }
                        }
                        else
                        {
                            var valueOf = (from x in lstDic
                                           where x.Key.Contains(item.Name.ToString())
                                           select x.Value).FirstOrDefault();

                            if (valueOf != null)
                            {
                                item.SetValue(valueOf);
                            }
                        }
                    }
                }
                else
                {
                    continue;
                }
            }

            xdoc = ValidatesFieldsXDoc(xdoc);

            xdoc.Save(xmlFilename);
            return(true);
        }
        public static bool AddByXML(UserModel p, string xmlFilename)
        {
            XDocument xdoc = XDocument.Load(xmlFilename);

            if (p.UserId <= 0)
            {
                p.UserId = xdoc.Root.Elements().Count() + 1;
            }
            p.Guid = Guid.NewGuid();

            GenericPropertyFinder <UserModel> objGenericPropertyFinder = new GenericPropertyFinder <UserModel>();
            var lstDic = objGenericPropertyFinder.ReturTModelPropertyAndValue(p);

            XElement ele    = new XElement("UserModel", null);
            XElement subEle = null;

            foreach (var item in lstDic)
            {
                if (subEle != null && subEle.Name != item.Key.Remove(5))
                {
                    ele.Add(subEle);
                    subEle = null;
                }

                if (item.Key.Contains("_Role"))
                {
                    if (subEle == null)
                    {
                        subEle = new XElement("_Role", null);
                    }


                    var valueOf = (from x in lstDic
                                   where x.Key.Contains(item.Key)
                                   select x.Value).FirstOrDefault();

                    subEle.SetElementValue(item.Key.Remove(0, 6), valueOf);
                    continue;
                }
                else if (item.Key.Contains("Depto"))
                {
                    if (subEle == null)
                    {
                        subEle = new XElement("Depto", null);
                    }

                    var valueOf = (from x in lstDic
                                   where x.Key.Contains(item.Key)
                                   select x.Value).FirstOrDefault();

                    subEle.SetElementValue(item.Key.Remove(0, 6), valueOf);
                    continue;
                }
                else
                {
                    var valueOf = (from x in lstDic
                                   where x.Key.Contains(item.Key)
                                   select x.Value).FirstOrDefault();

                    ele.SetElementValue(item.Key, valueOf);
                }
            }
            xdoc.Root.Add(ele);

            xdoc = ValidatesFieldsXDoc(xdoc);

            xdoc.Save(xmlFilename);
            return(true);
        }