public void ReadXml(System.Xml.XmlReader reader) { name = reader.GetAttribute("name"); password = reader.GetAttribute("password"); recordFileName = reader.GetAttribute("filename"); records = new Dictionary<string, List<Record>>(); reader.ReadStartElement(); // "history" node DateTime stackTime = DateTime.Today; while (!reader.EOF) { var node = reader.MoveToContent(); if (node == System.Xml.XmlNodeType.EndElement) { reader.ReadEndElement(); } else if (reader.Name == "history") { reader.ReadStartElement(); } else if (reader.Name == "recordstack" || reader.Name == "recordlist") { stackTime = DateTime.Parse(reader.GetAttribute("date")); records.Add(stackTime.ToString("d"), new List<Record>()); reader.ReadStartElement(); } else if (reader.Name == "record") { Record r = new Record(); r.ReadXml(reader); records[stackTime.ToString("d")].Add(r); records[stackTime.ToString("d")].Sort((Record a, Record b) => { return a.Start.CompareTo(b.Start); }); //reader.ReadEndElement(); } } }