У меня есть вложенный XML, который мне нужно преобразовать в CSV с помощью Powershell.
К сожалению, я более новичок и не смог решить эту проблему с помощью существующих тем, которые я нашел в Интернете.
Я пытался это сделать, прочитав XML-файл в Powershell и создав новый объект, но мой экспорт в csv даже не дал этого недостаточного результата ...: (
XML-файл, который у меня есть, выглядит следующим образом:
<?xml version="1.0" encoding="ISO-8859-1"?>
<Data source="Jhonny" datetime="2019-04-23T10:07:50+02:00" timezone="Europe">
<dealerships>
<location name="Germany">
<series parameter="Sold Cars" unit="car">
<value datetime="2019-04-22T00:00:00+02:00" value="7.3"/>
<value datetime="2019-04-22T01:00:00+02:00" value="7.8"/>
<value datetime="2019-04-22T02:00:00+02:00" value="7.0"/>
<value datetime="2019-04-22T03:00:00+02:00" value="6.0"/>
</series>
<series parameter="Sold Cars" unit="Auto">
<value datetime="2019-04-22T00:00:00+02:00" value="4.0"/>
<value datetime="2019-04-22T01:00:00+02:00" value="4.0"/>
<value datetime="2019-04-22T02:00:00+02:00" value="4.0"/>
<value datetime="2019-04-22T03:00:00+02:00" value="4.0"/>
</series>
</location>
<location name="USA">
<series parameter="Sold Cars" unit="car">
<value datetime="2019-04-22T00:00:00+02:00" value="5.1"/>
<value datetime="2019-04-22T01:00:00+02:00" value="4.1"/>
<value datetime="2019-04-22T02:00:00+02:00" value="3.6"/>
<value datetime="2019-04-22T03:00:00+02:00" value="3.1"/>
</series>
<series parameter="Sold Cars" unit="Auto">
<value datetime="2019-04-22T00:00:00+02:00" value="3.0"/>
<value datetime="2019-04-22T01:00:00+02:00" value="3.0"/>
<value datetime="2019-04-22T02:00:00+02:00" value="3.0"/>
<value datetime="2019-04-22T03:00:00+02:00" value="3.0"/>
</series>
</location>
</dealerships>
</Data>
Результат, к которому я стремлюсь, будет выглядеть так:
Location;Date/Time;Sold Cars car;Sold Cars Auto
Germany; 2019-04-22T00:00:00+02:00; 7.3;4.0
Germany; 2019-04-22T00:00:00+02:00; 7.8;5.0
Germany; 2019-04-22T00:00:00+02:00; 7.0;3.0
Germany; 2019-04-22T00:00:00+02:00; 6.0;4.0
USA; 2019-04-22T00:00:00+02:00; 5.1;3.0
USA; 2019-04-22T00:00:00+02:00; 4.1;6.0
USA; 2019-04-22T00:00:00+02:00; 3.6;1.0
USA; 2019-04-22T00:00:00+02:00; 3.1;8.0
Поскольку я на самом деле нигде не получил, я не думаю, что мой код помогает, но вот
как я пытался ее решить, но не получилось:
$xml = "C:\Users\[me]\Convert_XML_to_CSV\cars.xml"
$obj = New-Object System.XML.XMLDocument
$obj.Load("$xml")
foreach ($i in $_.Data.dealerships.location) {
$o = New-Object Object
Add-Member -InputObject $o -MemberType NoteProperty -Name location -Value $obj.Data.dealerships.Location $i $o
} | Export-Csv "result.csv" -Delimiter "," -NoType -Encoding UTF8