private static Core.TestFilter FromXml(XmlNode xmlNode) { switch (xmlNode.Name) { case "filter": case "and": var andFilter = new Core.Filters.AndFilter(); foreach (XmlNode childNode in xmlNode.ChildNodes) { andFilter.Add(FromXml(childNode)); } return(andFilter); case "or": var orFilter = new Core.Filters.OrFilter(); foreach (System.Xml.XmlNode childNode in xmlNode.ChildNodes) { orFilter.Add(FromXml(childNode)); } return(orFilter); case "not": return(new NotFilter(FromXml(xmlNode.FirstChild))); case "tests": var testFilter = new Core.Filters.SimpleNameFilter(); var testNodes = xmlNode.SelectNodes("test"); if (testNodes != null) { foreach (XmlNode childNode in testNodes) { testFilter.Add(childNode.InnerText); } } return(testFilter); case "cat": var catFilter = new Core.Filters.CategoryFilter(); foreach (string cat in xmlNode.InnerText.Split(COMMA)) { catFilter.AddCategory(cat); } return(catFilter); default: throw new ArgumentException("Invalid filter element: " + xmlNode.Name, "xmlNode"); } }
private static Core.TestFilter FromXml(XmlNode xmlNode) { switch (xmlNode.Name) { case "filter": case "and": var andFilter = new Core.Filters.AndFilter(); foreach (XmlNode childNode in xmlNode.ChildNodes) andFilter.Add(FromXml(childNode)); return andFilter; case "or": var orFilter = new Core.Filters.OrFilter(); foreach (System.Xml.XmlNode childNode in xmlNode.ChildNodes) orFilter.Add(FromXml(childNode)); return orFilter; case "not": return new NotFilter(FromXml(xmlNode.FirstChild)); case "tests": var testFilter = new Core.Filters.SimpleNameFilter(); var testNodes = xmlNode.SelectNodes("test"); if(testNodes != null) foreach (XmlNode childNode in testNodes) testFilter.Add(childNode.InnerText); return testFilter; case "cat": var catFilter = new Core.Filters.CategoryFilter(); foreach (string cat in xmlNode.InnerText.Split(COMMA)) catFilter.AddCategory(cat); return catFilter; default: throw new ArgumentException("Invalid filter element: " + xmlNode.Name, "xmlNode"); } }