Powershell插入多个XML元素

时间:2012-05-09 21:32:01

标签: powershell

我有一个XML文件,其结构类似于以下内容:

<a>
  <b>
    <c>aa</c>
  </b>
  <d>
    <e>bb</e>
  </d>
</a>

我需要做的是插入其他元素,以获得以下内容:

<a>
  <b>
    <c>aa</c>
  </b>
  <d>
    <e>bb</e>
    <e>cc</e>
    <e>dd</e>
    <e>ff</e>
    <e>gg</e>
  </d>
</a>

我试图在Powershell中这样做。这是我试过的:

$xml = "path_to_xml_file"
$e1 = $xml.a.d.e
$e2 = $e1.clone()
$e2 = "cc"
$xml.a.d.InsertAfter($e2,$e1)
$xml.save("path_to_xml_file")

但这给了我一个错误。有人可以建议怎么做吗?

1 个答案:

答案 0 :(得分:3)

您应该在CreateElement实例上使用XmlDocument方法,例如:

$xml = [xml]@'
<a>
  <b>
    <c>aa</c>
  </b>
  <d>
    <e>bb</e>
  </d>
</a>
'@

$newNode = $xml.CreateElement('e')
$newNode.InnerText = "cc"
$xml.a.d.AppendChild($newNode) 

此外,如果从文件中获取XML,则应使用:

$xml = [xml](Get-Content path_to_xml_file)