1

如何根据属性名称值重新排列 XML,然后按以下顺序保存 - 主机名、DNSDomain、环境、HWSystemType、SystemType、HWSystemModel

谢谢你的帮忙。

<Objects>
  <Object>
    <Property Name="Hostname">myServer</Property>
    <Property Name="SystemType">Physical</Property>
    <Property Name="HWSystemModel">Windows Server</Property>
    <Property Name="HWSystemType">Unitary HW-System</Property>
    <Property Name="DNSDomain">Domain.net</Property>
    <Property Name="Environment">Testing</Property>
 </Object>
</Objects>
4

2 回答 2

0

好的 - 给你。只需运行此脚本 (sortxml.ps1) 并将输出重定向到您选择的文件,例如sortxml.ps1 > sorted_xml_file.xml

注意:需要Powershell 社区扩展模块Format-Xml

排序的xml.ps1:

# replace 'old.xml' with the path to your unsorted xmlfile
[xml]$xml = gc old.xml
[xml]$xmlnew = gc old.xml

$names = @('Hostname', 'DNSDomain', 'Environment', 'HWSystemType', 'SystemType', 'HWSystemModel' )

$nodes = $xmlnew.Objects.Object.Property
foreach($i in 0..($names.length - 1)) {
    foreach($j in $xml.Objects.Object.Property) {
        if($j.Name -eq $names[$i]) {
            $nodes[$i].Name = $j.Name
            $nodes[$i]."#text" = $j."#text"
            break
        }
    }
}

Format-Xml -inputobject $xmlnew
于 2012-08-25T00:53:50.237 回答
-1

要对 XML 进行排序@Name(但请注意字母顺序与您列出的不同),请尝试

Select-Xml -Path Your.xml -XPath //Property | Select-Object -ExpandProperty Node | Sort-Object -Property Name
于 2012-08-23T19:37:29.630 回答