In powershell 5.0, how to extract the "result" array of a dynamic JsonToExtract.json
and uniquely-append the extracted values to be <members>
beneath <name>TargetName</name>
in an existing file.XML
? See below for the file structures and what Im trying to achieve. Thanks in advance for the help!
JsonToExtract.json
{
"status": 0,
"result": [
"car",
"bike",
"wheel",
"door",
"fish",
"mountains"
]
}
file.xml (before merging)
<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://*">
<types>
<name>Weather</name>
<members>Cloudy</members>
</types>
<types>
<name>TargetName</name>
<members>car</members>
</types>
<version>48.0</version>
</Package>
file.xml (Here is what i expect)
<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://*">
<types>
<name>Weather</name>
<members>Cloudy</members>
</types>
<types>
<name>TargetName</name>
<members>car</members>
<members>bike</members>
<members>wheel</members>
<members>door</members>
<members>fish</members>
<members>mountains</members>
</types>
<version>48.0</version>
</Package>
Sample code:
$file = [xml](Get-Content file.xml -Raw)
$json = Get-Content .\JsonToExtract.json -Raw | ConvertFrom-Json
$TargetNode = $file.Package.types | where { $_.name -eq 'TargetName' }
foreach ($j in $json.result)
{
$e = $file.CreateElement(“members”,$file.Package.NamespaceURI)
$e.set_InnerText($j)
$TargetNode.AppendChild($e) > $null
}
$file.Save("$(Resolve-Path .)\fileOut.xml")