Разбор 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;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д