Reputation: 5686
I have an XML file with the following structure:
<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>
I want to group the XML per Series
and per month of the value
-Attribute of each contained Dimension
.
I already know how to group by month:
$doc.SelectNodes("//Series/Observation", $ns) | Group-Object { $_.Dimension.value.Substring(0,7) }
But this results in only 2 groups 2018-11
and 2018-12
. However, I need 4 groups, 2 for each Series
. How can this be achieved?
Upvotes: 0
Views: 300
Reputation: 174690
Reference the ParentNode
property as the first property to group by:
$doc.SelectNodes('//Series/Observation') | Group-Object { $_.ParentNode.key },{ $_.Dimension.value.Substring(0,7) } -NoElement
and you will get a result like:
Count Name
----- ----
2 A, 2018-11
2 A, 2018-12
2 B, 2018-11
2 B, 2018-12
Upvotes: 2