public List <MetcastTownInfo> GetMetcastTownInfos() { var infos = new List <MetcastTownInfo>(); foreach (var townElement in metcastDataDocument.XPathSelectElements("//TOWN")) { var name = townElement.Element("CITYNAME")?.Value; try { var day = int.Parse(townElement.Attribute("day")?.Value); var month = int.Parse(townElement.Attribute("month")?.Value); var year = int.Parse(townElement.Attribute("year")?.Value); var pressure = int.Parse(townElement.Element("PRESSURE")?.Value); var temperature = int.Parse(townElement.Element("TEMPERATURE")?.Attribute("value")?.Value); var relwet = int.Parse(townElement.Element("RELWET")?.Value); infos.Add(new MetcastTownInfo { Day = day, Month = month, Name = name, Pressure = pressure, Relwet = relwet, Temperature = temperature, Year = year }); } catch { log.Warn($"Некорректные данные для города {name}"); } } return(infos); }
public void Start() { while (true) { Console.Write("Укажите путь до файла: "); var pathToInputFile = Console.ReadLine(); if (!File.Exists(pathToInputFile)) { colorConsoleLog.Warn($"Файл не найден: '{pathToInputFile}'"); continue; } XDocument inputDocument; try { inputDocument = XDocument.Load(pathToInputFile); } catch (Exception e) { colorConsoleLog.Error($"Произошла ошибка при чтении файла: '{pathToInputFile}'"); colorConsoleLog.Error($"Message: {e.Message}\nStacktrace: {e.StackTrace}"); continue; } var metcastInfo = new MetcastXmlParser(inputDocument, colorConsoleLog).GetMetcastTownInfos(); var transformer = new DataTransformer(metcastInfo); var outputDocument = transformer.Transform(); var oldFileName = Path.GetFileNameWithoutExtension(pathToInputFile); var newFileName = $"{oldFileName}_output.xml"; var outputPath = Path.Combine(Path.GetDirectoryName(pathToInputFile), newFileName); if (File.Exists(outputPath)) { File.Delete(outputPath); } outputDocument.Save(outputPath); colorConsoleLog.Info($"Выходной файл сохранен по пути: '{outputPath}'"); } }