Powershell XML группировка по нескольким уровням - PullRequest
0 голосов
/ 28 марта 2019

У меня есть XML-файл со следующей структурой:

<XML>
    <Series key="A">
        <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>
    </Series>
    <Series key="B">
        <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>
    </Series>
</XML>

Я хочу сгруппировать XML по Series и по месяцам value -атрибутов каждого содержащегося Dimension.

Я уже знаю, как группировать по месяцам:

$doc.SelectNodes("//Series/Observation", $ns) | Group-Object { $_.Dimension.value.Substring(0,7) }

Но это приводит только к 2 группам 2018-11 и 2018-12. Однако мне нужно 4 группы, по 2 на каждую Series. Как этого достичь?

1 Ответ

2 голосов
/ 28 марта 2019

Ссылка на свойство ParentNode является первым свойством для группировки по:

$doc.SelectNodes('//Series/Observation') | Group-Object { $_.ParentNode.key },{ $_.Dimension.value.Substring(0,7) } -NoElement

, и вы получите такой результат:

Count Name
----- ----
    2 A, 2018-11
    2 A, 2018-12
    2 B, 2018-11
    2 B, 2018-12
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...