Powershell XML按多个级别分组

时间:2019-03-28 10:11:48

标签: xml powershell grouping

我有一个具有以下结构的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>

我想将每个Series和每个value属性的Dimension属性的XML分组。

我已经知道如何按月分组:

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

但这仅导致两个组2018-112018-12。但是,我需要4个组,每个Series 2个组。如何实现?

1 个答案:

答案 0 :(得分:2)

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