public void Read(Stream stream) { var doc = new XmlDocument(); doc.Load(stream); var tables = doc.GetElementsByTagName("T"); Tables = new OTFTable[tables.Count]; for (var i = 0; i < tables.Count; i++) { var table = tables.Item(i); var tableEntry = new OTFTable(); tableEntry.ID = int.Parse(table.Attributes["i"].Value); tableEntry.Name = table.Attributes["n"].Value; var numKeys = table.ChildNodes.Count; tableEntry.Keys = new OTFTableKey[numKeys]; for (var x = 0; x < numKeys; x++) { var key = table.ChildNodes[x]; var keyEntry = new OTFTableKey(); keyEntry.ID = int.Parse(key.Attributes["i"].Value); keyEntry.Label = key.Attributes["l"].Value; keyEntry.Value = int.Parse(key.Attributes["v"].Value); tableEntry.Keys[x] = keyEntry; } Tables[i] = tableEntry; } }