Example #1
0
        //Метод считывания элементов из файла и вычисления выражения
        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();
        }
Example #2
0
 //Конструктор заполняет поля класса значениями полученых из файла
 public Calculation(Calculation calculation)
 {
     mod     = calculation.mod;
     operand = calculation.operand;
     uid     = calculation.uid;
 }