'PowerShell: How to group by multiple attributes from an XML document?
I'm brand new to XML so I have a question about how to manipulate XML data. My current data has an EmployeeID in 2 different segments (not sure of terminology here, maybe attribute). I want to combine the segments per EmployeeID and TimeOfDay and ensure all data for an EmployeeID is in one segment.
I thought about trying this in another language, but I'd like to see how it's done in PowerShell. How could I do this?
It needs to be grouped by EmployeeID and TimeOfDay.
The current code doesn't return any results.
$xmlPath = 'XMLFilePath'
$xdoc = new-object System.Xml.XmlDocument
$xdoc.Load($xmlPath)
$xdoc.SelectNodes('//Employees/EmployeeID') | Group-Object { $_.ParentNode.key },{ $_.Dimension.value.Substring(0,7) } -NoElement
Current Data:
<Employees>
<Employee>
<EmployeeID>9999999999</EmployeeID>
<DaysOfWeekShort></DaysOfWeekShort>
<TimeOfDay>AM</TimeOfDay>
<BusNumber>7777</BusNumber>
<TimeOfDay>AM</TimeOfDay>
<BusNumber>9999</BusNumber>
</Employee>
<Employee>
<EmployeeID>9999999999</EmployeeID>
<DaysOfWeekShort></DaysOfWeekShort>
<TimeOfDay>PM</TimeOfDay>
<BusNumber>8888</BusNumber>
</Employee>
</Employees>
Desired Result:
<Employees>
<Employee>
<EmployeeID>9999999999</EmployeeID>
<DaysOfWeekShort></DaysOfWeekShort>
<TimeOfDay>AM</TimeOfDay>
<BusNumber>7777</BusNumber>
<BusNumber>9999</BusNumber>
<TimeOfDay>PM</TimeOfDay>
<BusNumber>8888</BusNumber>
</Employee>
</Employees>
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
