Convert XML to PSObject

后端 未结 3 1051
半阙折子戏
半阙折子戏 2020-12-28 15:12

Note: I\'m using ConvertTo-XML and cannot use Export-Clixml:

I create a simple PSObject:

$a = New-Object PSObj         


        
3条回答
  •  再見小時候
    2020-12-28 16:04

    My variant with unlimited depth.

    See examples.

    function ConvertFrom-Xml {
    <#
    .SYNOPSIS
        Converts XML object to PSObject representation for further ConvertTo-Json transformation
    .EXAMPLE
        # JSON->XML
        $xml = ConvertTo-Xml (get-content 1.json | ConvertFrom-Json) -Depth 4 -NoTypeInformation -as String
    .EXAMPLE
        # XML->JSON
        ConvertFrom-Xml ([xml]($xml)).Objects.Object | ConvertTo-Json
    #>
        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
        }
    }
    

提交回复
热议问题