<?xml version="1.0" encoding="utf-8"?>
<Data>
<Card>
<Id>123</Id>
<CreateDate>2022-06-20T21:01:32.7727011+05:00</CreateDate>
<CardData>
<Id>456</Id>
<Value>789</Value>
<Ord>0</Ord>
</CardData>
</Card>
</Data>
$Content = Get-Content $File
$Object = [XML]$Content
$Object | ConvertTo-Json -Depth 5
[
[
],
[
[
[
[
]
],
[
[
]
],
[
[
[
]
],
[
[
]
],
[
[
]
]
]
]
]
]
function ConvertFrom-Xml {param([System.Xml.XmlElement]$Object)
if (($Object -ne $null) -and ($Object.Property -ne $null)) {
$PSObject = New-Object PSObject
foreach ($Property in @($Object.Property)) {
if ($Property.Property.Name -like 'Property') {
$PSObject | Add-Member NoteProperty $Property.Name ($Property.Property | % {ConvertFrom-Xml $_})
} else {
if ($Property.'#text' -ne $null) {
$PSObject | Add-Member NoteProperty $Property.Name $Property.'#text'
} else {
if ($Property.Name -ne $null) {
$PSObject | Add-Member NoteProperty $Property.Name (ConvertFrom-Xml $Property)
}
}
}
}
$PSObject
}
}
ConvertFrom-Xml ([xml]($Content)).Objects.Object | ConvertTo-Json -Depth 5
function ConvertFrom-Xml {
param([parameter(Mandatory, ValueFromPipeline)] [System.Xml.XmlNode] $node)
process {
if ($node.DocumentElement) { $node = $node.DocumentElement }
$oht = [ordered] @{}
$name = $node.Name
if ($node.FirstChild -is [system.xml.xmltext]) {
$oht.$name = $node.FirstChild.InnerText
} else {
$oht.$name = New-Object System.Collections.ArrayList
foreach ($child in $node.ChildNodes) {
$null = $oht.$name.Add((ConvertFrom-Xml $child))
}
}
$oht
}
}
$Object = [XML]$Content
$Object | ConvertFrom-XML | ConvertTo-JSON -Depth 5
PS D:\> $s = '<?xml version="1.0" encoding="utf-8"?>
>> <Data>
>> <Card>
>> <Id>123</Id>
>> <CreateDate>2022-06-20T21:01:32.7727011+05:00</CreateDate>
>> <CardData>
>> <Id>456</Id>
>> <Value>789</Value>
>> <Ord>0</Ord>
>> </CardData>
>> </Card>
>> </Data>'
PS D:\> $xml = [xml]$s
PS D:\> function ConvertFrom-Xml2 {
>> param([parameter(Mandatory, ValueFromPipeline)] [System.Xml.XmlNode] $node)
>> process {
>> if ($node.DocumentElement) { $node = $node.DocumentElement }
>> $oht = [ordered] @{}
>> $name = $node.Name
>> if ($node.FirstChild -is [system.xml.xmltext]) {
>> $oht.$name = $node.FirstChild.InnerText
>> } else {
>> $oht.$name = New-Object System.Collections.ArrayList
>> foreach ($child in $node.ChildNodes) {
>> $null = $oht.$name.Add((ConvertFrom-Xml2 $child))
>> }
>> }
>> $oht
>> }
>> }
PS D:\> $xml | ConvertFrom-Xml2 | ConvertTo-Json -Depth 10
{
"Data": [
{
"Card": [
{
"Id": "123"
},
{
"CreateDate": "2022-06-20T21:01:32.7727011+05:00"
},
{
"CardData": [
{
"Id": "456"
},
{
"Value": "789"
},
{
"Ord": "0"
}
]
}
]
}
]
}