我最近開始學習PowerShell來更改XML文件。現在我無法在特定位置添加新節點。 我創建了一個xml節點 <Name2>Reference</Name2>
並且希望將其插入到一個<customer>
節點內的每個<VFI>
節點中。Powershell - 在多個位置添加一個xml節點
XML文件:
<WartbareEinheitenListe>
<WartbareEinheit>
<Name>John Wayne</Name>
<Typ>STRUKTUR</Typ>
<Customer>100008</Customer>
<WartbareEinheiten>
<WartbareEinheit>
<Name>Wohnhaus</Name>
<Typ>OBJECT</Typ>
<Customer>100008</Customer>
<VIF> <---- Insert here
<InfoFeld>
<Name>Nummer</Name>
<InfoFeldTyp>DECIMAL</InfoFeldTyp>
<Inhalt>
<Nummer>4500514</Nummer>
</Inhalt>
</InfoFeld>
</VIF>
</WartbareEinheit>
<WartbareEinheit>
<Name>John Wayne</Name>
<Typ>OBJECT</Typ>
<Customer>100008</Customer>
<VIF> <---- Insert here
<InfoFeld>
<Name>Nummer</Name>
<InfoFeldTyp>DECIMAL</InfoFeldTyp>
<Inhalt>
<Nummer>5002449</Nummer>
</Inhalt>
</InfoFeld>
</VIF>
</WartbareEinheit>
</WartbareEinheiten>
</WartbareEinheit>
</WartbareEinheitenListe>
我的代碼:
$Path = "$env:....\Desktop\xmlpath.xml"
$xml = New-Object -TypeName XML
$xml.Load($Path)
$AlOb = $xml.WartbareEinheitenListe.WartbareEinheit.WartbareEinheiten.WartbareEinheit | Where-Object {$_.Customer -eq "100008"}
$AlOb2 = $AlOb.SelectSingleNode("VIF")
$R = $AlOb | Where-Object {$_.Typ -eq "OBJECT"}
$E = $R.Typ
for ($i=0 ; $i -lt $E.count; $i++) {
$InfoFeld = $xml.CreateElement("InfoFeld")
$Mandant = $xml.CreateElement("Name2")
$MandantInhalt = $xml.CreateTextNode("Reference")
$Mandant.AppendChild($MandantInhalt)
$InfoFeld.AppendChild($Mandant)
$AlOb2.InsertAfter($InfoFeld,$AlOb.Node.VIF)
}
$NewPath = "$env:....Desktop\xmlpath2.xml"
$xml.Save($NewPath)
的結果是,我爲每一個VIF,這是正確的兩種新元素,但我的代碼將在最後兩個元素VIF節點。
Wheres my mistake?