根据节点值删除XML节点

时间:2016-08-23 10:20:36

标签: xml powershell

我的XML和PowerShell脚本有点问题。 我需要删除XML文件的Vlan项:

<?xml version="1.0" encoding="utf-8"?>
<Settings> 
  <ARP>
    <ConfigVLAN>
      <Vlan>Vlan1</Vlan>
      <Vlan>Vlan2</Vlan>
      <Vlan>Vlan3</Vlan>
      <Vlan>Vlan4$</Vlan>
    </ConfigVLAN>
  </ARP>
</Settings>

但我无法使用<Vlan>Vlan4$</Vlan>方法删除RemoveChild ....

$xml.Settings.ARP.configVLAN.SelectSingleNode("Vlan[text()=""$($selectedItem)""]").RemoveChild()

你能帮我吗?

1 个答案:

答案 0 :(得分:1)

您必须在父级上调用RemoveChild方法,并将要删除的实际节点作为参数传递:

$selectedItem = 'Vlan4$'
$xmlFilePath = "Your_xml_file_path"

$xml = [xml](Get-Content $xmlFilePath)
$nodeToRemove = $xml.Settings.ARP.configVLAN.SelectSingleNode("Vlan[text()=""$($selectedItem)""]")
$xml.Settings.ARP.ConfigVLAN.RemoveChild($nodeToRemove) | out-null
$xml.Save($xmlFilePath)