【发布时间】:2023-03-03 06:52:21
【问题描述】:
我正在尝试使用 powershell 和 xml 做一些非常简单的事情,但没有遇到一点麻烦。 基本上我正在尝试采用以下xml ...并按名称对机器元素进行排序。然后将它们放回 XML 中,以便我可以保存回文件。
如果输出 $new 对象,排序似乎可以工作,但是,在 replacechild 期间它抱怨“无法转换参数“0”,值为:“ReplaceChild”的“System.Object []”键入“System.Xml。 XmlNode”:“无法将“System.Object[]”转换为类型“System.Xml.XmlNode”。
如果我在 $orig 和 $new 上都执行 Get-Member,它们都说它们是 XMLElement 类型,我相信它继承自 XMLNode。
我想念什么?使我抓狂。感谢您的帮助!
<company>
<stuff>
</stuff>
<machines>
<machine>
<name>ca</name>
<b>123</b>
<c>123</c>
</machine>
<machine>
<name>ad</name>
<b>234</b>
<c>234</c>
</machine>
<machine>
<name>be</name>
<b>345</b>
<c>345</c>
</machine>
</machines>
<otherstuff>
</otherstuff>
</company>
[xml]$xml = (get-content Company.xml)
[XmlNode]$orig = $xml.Company.Machines
[XmlNode]$new = ($orig.Machine | sort Name )
$xml.Company.ReplaceChild($new, $orig)
【问题讨论】:
-
我找到了一个通用的 XML 排序脚本,对于比较两个相似的 XML 文件很有用。 Diff XML, via sorting XML elements and attributes
标签: xml powershell powershell-3.0