public List <Ecologist> ReadAllEcologists(string file) { List <Ecologist> res = new List <Ecologist>(); XmlDocument doc = new XmlDocument(); try { doc.Load(file); } catch { Exc(); } XmlElement root = doc.DocumentElement; if (root.LocalName != "company") { Exc(); } foreach (XmlNode ecologist in root.ChildNodes) { if (ecologist.LocalName != "ecologist" || ecologist.ChildNodes.Count < 1) { Exc(); } XmlNode name = ecologist.ChildNodes[0]; if (name.LocalName != "name") { Exc(); } Ecologist eco = new Ecologist(); eco.Name = name.InnerText; for (int i = 1; i < ecologist.ChildNodes.Count; i++) { //Проверка пробы громоздкая, поэтому вынесена в отдельную фнкцию Probe newProbe = ParseProbe(ecologist.ChildNodes[i]); if (newProbe == null) { Exc(); } eco.Probes.Add(newProbe); } res.Add(eco); } return(res); }
public List <Ecologist> ReadAllEcologists(string file) { List <Ecologist> res = new List <Ecologist>(); //существует еще вариант последовательного парсинга файла, //на случай очень больших xml , но его дольше кодить XmlDocument doc = new XmlDocument(); try { doc.Load(file); } catch { Exc(); } XmlElement root = doc.DocumentElement; if (root.LocalName != "company") { Exc(); } foreach (XmlNode ecologist in root.ChildNodes) { if (ecologist.LocalName != "ecologist" || ecologist.ChildNodes.Count < 1) { Exc(); } XmlNode name = ecologist.ChildNodes[0]; if (name.LocalName != "name") { Exc(); } Ecologist eco = new Ecologist(); eco.Name = name.InnerText; for (int i = 1; i < ecologist.ChildNodes.Count; i++) { Probe newProbe = ParseProbe(ecologist.ChildNodes[i]); if (newProbe == null) { Exc(); } eco.Probes.Add(newProbe); } res.Add(eco); } return(res); }