加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

将XML转换为PSObject

发布时间:2020-12-16 07:55:27 所属栏目:百科 来源:网络整理
导读:注意:我使用ConvertTo-XML,不能使用Export-Clixml: 我创建一个简单的PSObject: $a = New-Object PSObject -Property @{ Name='New' Server = $null Database = $null UserName = $null Password = $null} 然后我使用ConvertTo-XML将其转换为XML: $b = $a
注意:我使用ConvertTo-XML,不能使用Export-Clixml:

我创建一个简单的PSObject:

$a = New-Object PSObject -Property @{
    Name='New'
    Server = $null
    Database = $null
    UserName = $null
    Password = $null
}

然后我使用ConvertTo-XML将其转换为XML:

$b = $a | Convertto-XML -NoTypeInformation

XML如下所示:

<?xml version="1.0"?>
<Objects>
  <Object>
    <Property Name="Password" />
    <Property Name="Name">New</Property>
    <Property Name="Server" />
    <Property Name="UserName" />
    <Property Name="Database" />
  </Object>
</Objects>

我无法找出点符号或XPath查询来提取属性/元素并将$b转换回原始的PSObject.

您可以使用XPath轻松实现.尽管PowerShell通常使XML的工作非常简单,但在这种情况下,我认为使用严格PowerShell语法的格式将非常粗糙.
filter XmlProperty([String]$Property) {
    $_.SelectSingleNode("/Objects/Object/Property[@Name='$Property']").InnerText
}

$Name = $b | Xmlproperty Name
$Server = $b | XmlProperty Server
# etc...

编辑:一般来说,对于包含一个或多个Object元素的XML文档,您可以执行以下操作:

function ConvertFrom-Xml($XML) {
    foreach ($Object in @($XML.Objects.Object)) {
        $PSObject = New-Object PSObject
        foreach ($Property in @($Object.Property)) {
            $PSObject | Add-Member NoteProperty $Property.Name $Property.InnerText
        }
        $PSObject
    }
}

ConvertFrom-Xml $b

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读