2-е редактирование
Если я не ошибаюсь, вы хотите удалить Offingnode из вашего входного документа. Вот что вы можете сделать, если хотите использовать Select-Xml
:
$offendingnode = select-xml -xpath "/DocIcons/ByExtension/Mapping[@Key='pdf']" -xml $xmldoc
$xmldoc | select-xml -xpath "/DocIcons/ByExtension" | % {$_.node.removechild($offendingnode.node)}
1-е редактирование
Не очень понятно, что вы собираетесь делать. Также то, что вы бежите, немного запутано.
С этой строкой:
$xml | Select-Xml -XPath '//Mapping' | ForEach-Object{$_.Node.RemoveAll()}
Вы собираетесь удалить всех детей mapping
. Если вы хотите удалить все mapping
в ByExtension
, вам нужно что-то вроде
$xml | Select-Xml -XPath '//ByExtension' | % {$_.Node.RemoveAll()}
Для печати результата лучше использовать:
$xml.outerxml