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);
        }
예제 #2
0
        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}'");
            }
        }