Я пытаюсь сделать что-то довольно простое с powershell и xml, но у вас мало проблем. В основном я пытаюсь взять следующий xml ... и отсортировать элементы машины по имени. Затем верните их в XML, чтобы я мог сохранить его обратно в файл.powershell xml сортировать узлы и replacechild
Сортировка, похоже, работает, если выдает новый объект $ new, однако во время заменыchid он жалуется «Невозможно преобразовать аргумент« 0 »со значением:« System.Object [] »для« ReplaceChild », чтобы ввести« System.Xml .XmlNode ":" Невозможно преобразовать «System.Object []» для ввода «System.Xml.XmlNode».
Если я делаю Get-Member как для $ orig, так и для $ new, они оба говорят, что они имеют тип 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)
Да, это именно то, что я закончил делать. Спасибо, что подтвердили причины! – Shaunt
@RobertWesterlund Я реализовал ваше решение, выполнив мой сценарий с помощью PowerShell ISE. Я вижу, как изменяется порядок узлов, но затем я сохраняю изменения в файле, и он не изменяется вообще. – XtianGIS
извините .... глупая ошибка – XtianGIS