Разбор XML файла - C#

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток! Имеется очень большой 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>
Как получить значения success и startDatetime из ПОСЛЕДНЕГО узла RunState (с самой свежей датой)? Самого нижнего. Второй день уже изучаю xml науку и, честно говоря, уже запутался...

Решение задачи: «Разбор 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;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.333 из 5