public static void Main() { var taxiStation = new TaxiStation(); var reader = new Reader(); reader.ReaderFile(ref taxiStation, "data.xml"); Console.WriteLine("Все автомобили:"); Console.WriteLine(taxiStation); Console.WriteLine("Общая стоимость:"); Console.WriteLine(taxiStation.TotalCoast() + "\n"); Console.WriteLine("Транспорт подходящий условиям:"); List <Car> temp = taxiStation.SearchCarByMaxSpeed(60, 100); foreach (var t in temp) { Console.WriteLine(t + "\n"); } Console.WriteLine("Добавить(y/n)?"); if (Console.ReadLine() == "y") { taxiStation.AddToFile(); var writer = new Writer(); writer.WriteFile(ref taxiStation); } Console.ReadLine(); }
/// <summary> /// Сохранение в xml файл /// </summary> /// <param name="taxiStation">Объект таксопарка</param> public void WriteFile(ref TaxiStation taxiStation) { var doc = new XmlDocument(); doc.LoadXml("<Taxi>" + "</Taxi>"); foreach (var t in taxiStation.CarsList) { XmlElement element = doc.CreateElement("taxi"); if (t is Truck) { var temp = t as Truck; element.SetAttribute("type", "Truck"); XmlElement elementLoad = doc.CreateElement("load"); XmlText textLoad = doc.CreateTextNode(Convert.ToString(temp.Load)); doc.DocumentElement.AppendChild(element); element.AppendChild(elementLoad); element.LastChild.AppendChild(textLoad); } else if (t is Bus) { var temp = t as Bus; element.SetAttribute("type", "Bus"); XmlElement elementCount = doc.CreateElement("count"); XmlText textCount = doc.CreateTextNode(Convert.ToString(temp.Count)); doc.DocumentElement.AppendChild(element); element.AppendChild(elementCount); element.LastChild.AppendChild(textCount); } else { var temp = t as PassengerCar; element.SetAttribute("type", "PassengerCar"); XmlElement elementObem = doc.CreateElement("engineVolume"); XmlText textObem = doc.CreateTextNode(Convert.ToString(temp.EngineVolume)); doc.DocumentElement.AppendChild(element); element.AppendChild(elementObem); element.LastChild.AppendChild(textObem); } XmlElement elementMake = doc.CreateElement("make"); XmlText textMake = doc.CreateTextNode(t.Make); XmlElement elementModel = doc.CreateElement("model"); XmlText textModel = doc.CreateTextNode(t.Model); XmlElement elementSpeed = doc.CreateElement("speed"); XmlText textSspeed = doc.CreateTextNode(Convert.ToString(t.Speed)); XmlElement elementPrice = doc.CreateElement("price"); XmlText textPrice = doc.CreateTextNode(Convert.ToString(t.Price)); element.AppendChild(elementMake); element.LastChild.AppendChild(textMake); element.AppendChild(elementModel); element.LastChild.AppendChild(textModel); element.AppendChild(elementSpeed); element.LastChild.AppendChild(textSspeed); element.AppendChild(elementPrice); element.LastChild.AppendChild(textPrice); } doc.Save("data.xml"); }
/// <summary> /// Чтение из xml файла. /// </summary> /// <param name="taxi">Объект таксопарка.</param> /// <param name="fileName">Название файла.</param> public void ReaderFile(ref TaxiStation taxi, string fileName) { var xml = XDocument.Load(fileName); var qwe = new List <Car>(); var cars = xml.Root.Descendants("taxi").Select(x => x); foreach (var el in cars) { var name1 = el.Attribute("type").Value; switch (name1) { case "Truck": var tempCarT = new Truck(); tempCarT.Make = Convert.ToString(el.Element("make").Value); tempCarT.Model = Convert.ToString(el.Element("model").Value); tempCarT.Speed = Convert.ToInt32(el.Element("speed").Value); tempCarT.Price = Convert.ToInt32(el.Element("price").Value); tempCarT.Load = Convert.ToInt32(el.Element("load").Value); qwe.Add(tempCarT); break; case "Bus": var tempCarB = new Bus(); tempCarB.Make = Convert.ToString(el.Element("make").Value); tempCarB.Model = Convert.ToString(el.Element("model").Value); tempCarB.Speed = Convert.ToInt32(el.Element("speed").Value); tempCarB.Price = Convert.ToInt32(el.Element("price").Value); tempCarB.Count = Convert.ToInt32(el.Element("count").Value); qwe.Add(tempCarB); break; case "PassengerCar": var tempCarP = new PassengerCar(); tempCarP.Make = Convert.ToString(el.Element("make").Value); tempCarP.Model = Convert.ToString(el.Element("model").Value); tempCarP.Speed = Convert.ToInt32(el.Element("speed").Value); tempCarP.Price = Convert.ToInt32(el.Element("price").Value); tempCarP.EngineVolume = Convert.ToDouble(el.Element("engineVolume").Value); qwe.Add(tempCarP); break; default: break; } } var taxi1 = new TaxiStation() { CarsList = qwe.ToList() }; taxi = taxi1; }