我想使用powershell对以下xml文档进行排序.
<car>
<germany>
<manufacturer>Opel</manufacturer>
<manufacturer>BMW</manufacturer>
<manufacturer>Benz</manufacturer>
</germany>
<japan>
<manufacturer>Nissan</manufacturer>
<manufacturer>Daihatsu</manufacturer>
</japan></car>
Run Code Online (Sandbox Code Playgroud)
因此,应该对德国和日本内部的元素进行排序.
理想情况下,我想从文件系统中读取xml,并使用已排序的文档覆盖现有文档.
可能有很多解决方案.一个很快就是这个:
$xml = [xml]"<car>
<germany>
<manufacturer>Opel</manufacturer>
<manufacturer>BMW</manufacturer>
<manufacturer>Benz</manufacturer>
<manufacturer>b</manufacturer>
<manufacturer>a</manufacturer>
<manufacturer>c</manufacturer>
</germany>
<japan>
<manufacturer>Nissan</manufacturer>
<manufacturer>Daihatsu</manufacturer>
</japan></car>"
$g = $xml.car.germany| select-xml 'manufacturer' | Select-Object -expand Node | sort '#text'
$j = $xml.car.japan | select-xml 'manufacturer' | Select-Object -expand Node | sort '#text'
@"
<car>
<germany>
$( ($g | % { $_.OuterXml}) -join "`n`t" )
</germany>
<japan>
$( ($j | % { $_.OuterXml}) -join "`n`t" )
</japan></car>
"@
Run Code Online (Sandbox Code Playgroud)
请注意,我曾经Select-Xml
从xml中提取制造商,因为$xml.car.germany.manufacturer
只返回了字符串数组(你可能遇到了问题).即使在PsBase
财产的帮助下,我也无法得到原始物体.这就是我使用的原因Select-Xml
.
归档时间: |
|
查看次数: |
2996 次 |
最近记录: |