xml - Powershell - 在多个位置添加一个xml节点

标签 xml powershell

我最近开始学习 powershell 来更改 XML 文件。现在我无法在特定位置添加新节点。 我创建了一个 xml 节点 <Name2>Reference</Name2> 并希望将其插入每个 <VFI>一个内的节点 <customer>节点。

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 节点中。

我哪里错了?

最佳答案

我想我自己解决了:

我用一些数组试过了,现在可以了。

数组代码: $Array = @($AlOb2)

InsertAfter 代码:

$Array[$i].InsertAfter($InfoFeld,$AlOb.Node.VIF)

祝大家有个愉快的星期天

关于xml - Powershell - 在多个位置添加一个xml节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33593704/

相关文章:

regex - Powershell:如果正则表达式不匹配,则保留项目

powershell - 连接 PowerShell 变量

azure - 我们可以使用任何命令/脚本/ARM 模板创建 Azure 服务连接吗?

powershell - 在 PowerShell 中访问嵌套对象

c# - 在与 Lync 的远程 session 中执行标准 PowerShell cmdlet

xml - 在 R 中使用可变 XML 结构解析 RSS 提要

android - WebView 未自动加载

具有属性的元素中的 xml 模式嵌套元素

XML 命名空间,为什么前缀需要它们?

xml - 如何在 Perl 中使用 XML 文件?