У меня есть XML-файл со следующей (упрощенной) структурой:
<XML>
<Observation>
<Dimension value="2018-11-01" />
<Value value="123" />
</Observation>
<Observation>
<Dimension value="2018-11-02" />
<Value value="456" />
</Observation>
<Observation>
<Dimension value="2018-12-01" />
<Value value="789" />
</Observation>
<Observation>
<Dimension value="2018-12-02" />
<Value value="222" />
</Observation>
</XML>
Задача состоит в том, чтобы удалить узлы, где дата в атрибуте value
узла Dimension
не максимальная дата. Или другими словами: должны быть сохранены только узлы, содержащие максимальную / максимальную дату в атрибуте value
узла Dimension
. Это должно быть сделано в месяц .
Следовательно, результат должен выглядеть следующим образом:
<XML>
<Observation>
<Dimension value="2018-11-02" />
<Value value="456" />
</Observation>
<Observation>
<Dimension value="2018-12-02" />
<Value value="222" />
</Observation>
</XML>
Как это можно сделать в Powershell? Я знаю, как читать XML-файл и как делать запросы на основе XPath:
$doc.SelectNodes("//Observation", $ns)
Однако я не знаю, как а) определить максимальную / максимальную дату в месяце и б) как удалить узлы, которые не содержат максимальную / максимальную дату.
EDIT:
Другой, возможно, более простой способ сделать это будет следующим:
- найти максимальные / максимальные даты в месяц
- хранить только те узлы, которые
иметь эту дату.