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 Community Extensionsモジュールが必要ですFormat-Xml

sortedxml.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 に答える