Разбор XML файла - C#
Формулировка задачи:
Доброго времени суток! Имеется очень большой XML файл вот такого вида (я укоротил его)
Как получить значения success и startDatetime из ПОСЛЕДНЕГО узла RunState (с самой свежей датой)? Самого нижнего. Второй день уже изучаю xml науку и, честно говоря, уже запутался...
<?xml version="1.0" encoding="windows-1251"?> <AutoAuditState> <ImportScenario id="ImpBezen"> <RunState success="0" startDatetime="18 января 2017 г. 2:00:19" packetFileName="D:\_AuditLocal\Archive\2017_01_17_23_00\ExpADS2017_01_17_23_00.xml" logFileName="D:\_AuditLocal\Archive\2017_01_17_23_00\ExpADS2017_01_17_23_00_import.log" stopDatetime="18 января 2017 г. 2:00:57">В процессе импорта обработано: 1378 записей таблицы аудита, 1 семантических записей, 213 графических объектов. Произошло: 0 предупреждений, 0 ошибок, 0 критических ошибок. Импорт длился 00:00:34.</RunState> <RunState success="1" startDatetime="19 января 2017 г. 2:00:16" packetFileName="D:\_AuditLocal\Archive\2017_01_18_08_35\ExpADS2017_01_18_08_35.xml" logFileName="D:\_AuditLocal\Archive\2017_01_18_08_35\ExpADS2017_01_18_08_35_import.log" stopDatetime="19 января 2017 г. 2:00:22">В процессе импорта обработано: 11 записей таблицы аудита, 0 семантических записей, 0 графических объектов. Произошло: 0 предупреждений, 0 ошибок, 0 критических ошибок. Импорт длился 00:00:04.</RunState> <RunState success="1" startDatetime="19 января 2017 г. 2:00:22" packetFileName="D:\_AuditLocal\Archive\2017_01_18_23_00\ExpADS2017_01_18_23_00.xml" logFileName="D:\_AuditLocal\Archive\2017_01_18_23_00\ExpADS2017_01_18_23_00_import.log" stopDatetime="19 января 2017 г. 2:00:50">В процессе импорта обработано: 1088 записей таблицы аудита, 0 семантических записей, 146 графических объектов. Произошло: 0 предупреждений, 0 ошибок, 0 критических ошибок. Импорт длился 00:00:24.</RunState></ImportScenario> </AutoAuditState>
Решение задачи: «Разбор XML файла»
textual
Листинг программы
var success = XDocument.Load("d://file.xml") .Descendants("RunState") .Select(s => new { startDate = DateTime.Parse(s.Attribute("startDatetime").Value), success = s.Attribute("success").Value }) .OrderByDescending(s => s.startDate) .First().success;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д