public void Init(string periodicData, HandleProgress progress) { progress(0, "Searching for cached table..."); if (File.Exists(periodicData)) { Stream file = File.Open(periodicData, FileMode.OpenOrCreate); this.elements = (Element[])serializer.Deserialize(file); } else { List <Element> elements = new List <Element>(); XmlDocument resolver = new XmlDocument(); resolver.LoadXml(table.GetAtoms()); XmlNodeList nodes = resolver.GetElementsByTagName("ElementName"); int i = 0; foreach (XmlNode tag in nodes) { Element element = new Element() { Name = tag.InnerXml }; resolver.LoadXml(table.GetAtomicNumber(element.Name)); element.Symbol = resolver.GetElementsByTagName("Symbol")[0].InnerXml; element.Atomic = int.Parse(resolver.GetElementsByTagName("AtomicNumber")[0].InnerXml); elements.Add(element); progress((double)i++ / (double)nodes.Count, "Downloaded " + tag.InnerXml); } this.elements = elements.OrderByDescending(e => e.Symbol.Length).ToArray(); Stream file = File.Open(periodicData, FileMode.OpenOrCreate); serializer.Serialize(file, this.elements); progress(1, "Complete"); IsInit = true; } }
public void Init(string periodicData, HandleProgress progress) { progress(0, "Searching for cached table..."); if (File.Exists(periodicData)) { Stream file = File.Open(periodicData, FileMode.OpenOrCreate); this.elements = (Element[])serializer.Deserialize(file); } else { List<Element> elements = new List<Element>(); XmlDocument resolver = new XmlDocument(); resolver.LoadXml(table.GetAtoms()); XmlNodeList nodes = resolver.GetElementsByTagName("ElementName"); int i = 0; foreach (XmlNode tag in nodes) { Element element = new Element() { Name = tag.InnerXml }; resolver.LoadXml(table.GetAtomicNumber(element.Name)); element.Symbol = resolver.GetElementsByTagName("Symbol")[0].InnerXml; element.Atomic = int.Parse(resolver.GetElementsByTagName("AtomicNumber")[0].InnerXml); elements.Add(element); progress((double)i++ / (double)nodes.Count, "Downloaded " + tag.InnerXml); } this.elements = elements.OrderByDescending(e => e.Symbol.Length).ToArray(); Stream file = File.Open(periodicData, FileMode.OpenOrCreate); serializer.Serialize(file, this.elements); progress(1, "Complete"); IsInit = true; } }