I am trying to convert an xml file to json for further processing. This is actually first time I use powershell so I need some help.
I get an xml file with this structure:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="https://www.something..."?>
<tabela>
<naslov>Robno knjigovodstvo - pregled automatskog stanja zaliha artikala</naslov>
<dataset>qu1RobaZalihe</dataset>
<datum_kreiranja>12.02.2021</datum_kreiranja>
<zaglavlje><sifra>Šifra</sifra><naziv>Naziv</naziv><katbroj>Kataloški broj</katbroj><cfJedmj>JedMj</cfJedmj><stanje>Stanje</stanje><cijena>Nabavna cijena</cijena><datum>Datum dokumenta</datum></zaglavlje>
<redovi>
<red>
<sifra>1</sifra>
<naziv>CORE HIT</naziv>
<katbroj>A4B0000006606</katbroj>
<cfJedmj>KOM</cfJedmj>
<stanje>1</stanje>
<cijena>100,00</cijena>
<datum>01.01.2021</datum>
</red>
<red>
<sifra>2</sifra>
<naziv>CORE HIT</naziv>
<katbroj>A4B0000008340</katbroj>
<cfJedmj>KOM</cfJedmj>
<stanje>8</stanje>
<cijena>100,00</cijena>
<datum>01.01.2021</datum>
</red>
...
</redovi>
</tabela>
I need to ger an array of objets separated with comma like this:
[
{
"sifra": "1",
"naziv": "CORE HIT 7050",
"jed_mj": "KOM",
"kolicina": "1",
"skladiste": "1",
"pn": "TNX:A4B0000006606"
},
{
"sifra": "2",
"naziv": "CORE HIT 7020",
"jed_mj": "KOM",
"kolicina": "8",
"skladiste": "1",
"pn": "TNX:A4B0000008340"
},
{
"sifra": "3",
"naziv": "SYSTEM SW LICENCE AND CD-ROM",
"jed_mj": "KOM",
"kolicina": "1",
"skladiste": "1",
"pn": "TNX:A4B0000007760"
},
...
]
... but instead I get only objects like this:
{
"sifra": "1",
"naziv": "CORE HIT 7050",
"pn": "TNX:A4B0000006606",
"jed_mj": "KOM",
"kolicina": "1",
"skladiste": "1"
}
{
"sifra": "2",
"naziv": "CORE HIT 7020",
"pn": "TNX:A4B0000008340",
"jed_mj": "KOM",
"kolicina": "8",
"skladiste": "1"
}
{
"sifra": "3",
"naziv": "SYSTEM SW LICENCE AND CD-ROM",
"pn": "TNX:A4B0000007760",
"jed_mj": "KOM",
"kolicina": "1",
"skladiste": "1"
}
So far I managed to figure out some things but not all :) Code I use to get this is following:
[xml]$xml = Get-Content xml-skladiste.XML
foreach ($atr in $xml.tabela.redovi.red)
{
$prop = [ordered]@{
'sifra' = $atr.sifra
'naziv' = $atr.naziv
'pn' = $atr.katbroj
'jed_mj' = $atr.cfJedmj
'kolicina' = $atr.stanje
'skladiste' = "1"
}
New-Object -Type PSCustomObject -Property $prop | ConvertTo-Json | Add-Content -Path "output.json"
}
What I have to add in order to get desirable structure?