public static GearSetBuild FromXml(XmlDocument doc, bool filters, bool results)
        {
            GearSetBuild build = new GearSetBuild();

            try
            {
                build.AppVersion   = doc.DocumentElement.GetAttribute("version");
                build.MinimumLevel = int.Parse(doc.GetElementsByTagName("MinimumLevel")[0].InnerText);
                build.MaximumLevel = int.Parse(doc.GetElementsByTagName("MaximumLevel")[0].InnerText);

                if (filters)
                {
                    XmlElement xe = doc.GetElementsByTagName("Filters")[0] as XmlElement;
                    if (xe != null)
                    {
                        foreach (XmlElement xf in xe.ChildNodes)
                        {
                            BuildFilter bf = BuildFilter.FromXml(xf);
                            build.Filters[bf.Slot].Add(bf);
                        }
                    }
                }

                if (results)
                {
                    XmlElement xe = doc.GetElementsByTagName("BuildResults")[0] as XmlElement;
                    if (xe != null)
                    {
                        foreach (XmlElement xb in xe.ChildNodes)
                        {
                            GearSetEvaluation gse = GearSetEvaluation.FromXml(xb);
                            build.BuildResults.Add(gse);
                        }
                    }
                }

                return(build);
            }
            catch
            {
                return(null);
            }
        }
        public static GearSetEvaluation FromXml(XmlElement xe)
        {
            try
            {
                GearSet    gs  = GearSet.FromXml(xe.GetElementsByTagName("GearSet")[0] as XmlElement);
                XmlElement xls = xe.GetElementsByTagName("LockedSlots")[0] as XmlElement;
                List <EquipmentSlotType> ls = new List <EquipmentSlotType>();
                foreach (XmlElement xc in xls.ChildNodes)
                {
                    ls.Add((EquipmentSlotType)Enum.Parse(typeof(EquipmentSlotType), xc.InnerText));
                }
                GearSetEvaluation gse = new GearSetEvaluation(gs, ls);
                gse.Rating  = int.Parse(xe.GetAttribute("rating"));
                gse.Penalty = int.Parse(xe.GetAttribute("penalty"));

                return(gse);
            }
            catch { return(null); }
        }