2016-03-08 3 views
2

Я добавляю связанные элементы (Parent-Child) через файл XML, используя следующие:обратных Foreach XML узлов в PowerShell

[xml]$fileXml = Get-Content 'c:\example.xml' 

$fileXml.Elements | % { 
    MyAdd-Function $_ 
} 

При удалении этих элементов, как я могу убедиться, что перебирает в обратном заказ? Я попробовал это, и это не работает:

[xml]$fileXml = Get-Content 'c:\example.xml' 

[Array]::Reverse($fileXml.Elements) | % { 
    MyRemove-Function $_ 
} 

Я думаю о превращении $fileXml.Elements в реальный массив, а затем задним ходом, но мне было интересно, если есть более простой способ.

ответ

1

Ваш подход звучит хорошо для меня, но учитывая, что Reverse() не возвращает массив, вам придется разделить Reverse() и Foreach-Object.

PS > [array]::Reverse.OverloadDefinitions 
static void Reverse(array array) 

Я не знаю, где вы получили Elements -свойство из, но вот PoC:

PS > $xml = [xml]@" 
<?xml version="1.0" encoding="UTF-8"?> 
<root> 
<note> 
<to>User1</to> 
</note> 
<note> 
<to>User2</to> 
</note> 
</root> 
"@ 

#Store the elements in an array 
PS > $a = $xml.root.note 
PS > $a | % { $_.to } 

User1 
User2 

#Reverse 
PS > [array]::Reverse($a) 
PS > $a | % { $_.to } 

User2 
User1 
+0

Awesome! Это сработало! Я думаю, мне нужно сохранить его в переменной first c: – Katie

Смежные вопросы