public Tariff(string name, string operName, double payroll, CallPrices callPr, double smsPr, Parameter parameter) { this.name = name; this.operatorName = operName; this.payroll = payroll; this.callPrices = callPr; this.smsPrice = smsPr; this.parameter = parameter; }
// Метод, возвращающий цены тарифа private CallPrices createCallPrices(XmlNode xmlCall) { CallPrices callPrices = new CallPrices(); foreach (XmlNode node_call in xmlCall.ChildNodes) { if (node_call.Name == "insideNetwork") { callPrices.setInsideNetwork(Convert.ToDouble(node_call.InnerText)); } if (node_call.Name == "outsideNetwork") { callPrices.setOutsideNetwork(Convert.ToDouble(node_call.InnerText)); } if (node_call.Name == "fixedPhone") { callPrices.setFixedPhone(Convert.ToDouble(node_call.InnerText)); } } return callPrices; }
// Метод который отвечает за парсинг файла XML public List <Tariff> XML_TariffSAX() { List <Tariff> tariff_List = new List <Tariff>(); Validation = true; XmlReaderSettings xmlSetting = new XmlReaderSettings(); xmlSetting.Schemas.Add("http://www.example.com/students", xsd_file); xmlSetting.ValidationType = ValidationType.Schema; xmlSetting.ValidationEventHandler += new ValidationEventHandler(booksSettingsValidationEventHandler); Tariff tariff = new Tariff(); CallPrices callPrices = new CallPrices(); Parameter parameter = new Parameter(); using (XmlReader pars = XmlReader.Create(xml_file, xmlSetting)) { try { while (pars.Read()) { if (pars.HasAttributes) { // Получение атрибутов while (pars.MoveToNextAttribute()) { if (pars.Name == "name") { tariff.setName(pars.Value); } if (pars.Name == "operatorName") { tariff.setOperatorName(pars.Value); } } } // Получаем значения элементов из файла XML switch (pars.NodeType) { case XmlNodeType.Element: switch (pars.Name) { case "payroll": pars.Read(); tariff.setPayroll(Convert.ToDouble(pars.Value)); break; case "callPrices": pars.Read(); tariff.setCallPrices(callPrices); break; case "insideNetwork": pars.Read(); tariff.getCallPrices().setInsideNetwork(Convert.ToDouble(pars.Value)); break; case "outsideNetwork": pars.Read(); tariff.getCallPrices().setOutsideNetwork(Convert.ToDouble(pars.Value)); break; case "fixedPhone": pars.Read(); tariff.getCallPrices().setFixedPhone(Convert.ToDouble(pars.Value)); break; case "smsPrice": pars.Read(); tariff.setSmsPrice(Convert.ToDouble(pars.Value)); break; case "parameter": pars.Read(); tariff.setParameter(parameter); break; case "favoriteNumber": pars.Read(); tariff.getParameter().setFavoriteNumber(Convert.ToInt64(pars.Value)); break; case "tariffication": pars.Read(); tariff.getParameter().setTariffication(pars.Value); break; case "connectionFee": pars.Read(); tariff.getParameter().setConnectionFee(Convert.ToDouble(pars.Value)); break; } break; // Добавляем в список объект case XmlNodeType.EndElement: if (pars.Name == "tariff") { tariff_List.Add(tariff); tariff = new Tariff(); parameter = new Parameter(); callPrices = new CallPrices(); } break; } } } catch (Exception) { Validation = false; } } // Возвращаем список тарифов return(tariff_List); }
public void setCallPrices(CallPrices call) { this.callPrices = call; }