//Метод считывания элементов из файла и вычисления выражения public void ReadFile(string filename) { this.filename = filename; int sizeInputData = 3; string[] inputData = new string[sizeInputData]; bool check; //Попытка считать файл по указоному пути XmlDocument xDoc = new XmlDocument(); try { xDoc.Load(filename); } catch (Exception e) { errorMessage = e.Message; error = true; return; } // Получение корневого элемента "calculations" XmlElement xRoot = xDoc.DocumentElement; // Обход всех узлов "calculation" foreach (XmlNode xnode in xRoot) { for (int index = 0; index < sizeInputData; index++) { inputData[index] = ""; } //Обход всех узлов элемента calculation foreach (XmlNode childnode in xnode.ChildNodes) { switch (childnode.Attributes.GetNamedItem("name").Value) { case "mod": inputData[0] = childnode.Attributes.GetNamedItem("value").Value; break; case "uid": inputData[2] = childnode.Attributes.GetNamedItem("value").Value; break; case "operand": if (Calculation.IsOperation(childnode.Attributes.GetNamedItem("value").Value)) { inputData[1] = childnode.Attributes.GetNamedItem("value").Value; } break; } } //Проверка что все поля элемента считаны успешно check = true; for (int index = 0; index < sizeInputData && check; index++) { if (inputData[index] == "") { check = false; } } if (check == true) { calculations.Add(new Calculation(inputData[0], inputData[1], inputData[2])); } } successfullyDeserializedElements = calculations.Count; Calculate(); }
//Конструктор заполняет поля класса значениями полученых из файла public Calculation(Calculation calculation) { mod = calculation.mod; operand = calculation.operand; uid = calculation.uid; }