Powershell从xml文件中删除空节点

Powershell从xml文件中删除空节点,xml,powershell,Xml,Powershell,我需要从xml文件中删除空节点 例: 麝香鹿 狩猎 俘获 神话学 传统叙事 其想法是删除以下节点: <Key Name="Topic" /> <Key Name="Topic" /> <Key Name="Topic" /> <Key Name="Keyword" /> <Key Name="

我需要从xml文件中删除空节点

例:


麝香鹿
狩猎
俘获
神话学
传统叙事
其想法是删除以下节点:

      <Key Name="Topic" />
      <Key Name="Topic" />
      <Key Name="Topic" />
      <Key Name="Keyword" />
      <Key Name="Keyword" />
      <Key Name="Keyword" />

有什么建议可以帮我吗


最好的

您可以在PowerShell中使用XML对象,如下所示:

$FileContent = New-Object -Typename XML
# Load file
$FileContent.Load("C:\Temp\in.xml")
$Nodes = $FileContent.SelectNodes("//Key")
# For each node
foreach ($Node in $Nodes) {
    if ($Node.InnerXml -ne "") {
        $Node.ParentNode.RemoveChild($Node)
    }
}
# Save file in UTF-8
$ConfigFileEncoding = New-Object System.Text.UTF8Encoding($false)
$ConfigFileWriter = New-Object System.XML.XMLTextWriter("C:\Temp\out.xml", $ConfigFileEncoding)
$ConfigFileWriter.Formatting = 'Indented'
$FileContent.Save($ConfigFileWriter)
$ConfigFileWriter.Close()

非常感谢,达米恩。所以规则:——---
$FileContent = New-Object -Typename XML
# Load file
$FileContent.Load("C:\Temp\in.xml")
$Nodes = $FileContent.SelectNodes("//Key")
# For each node
foreach ($Node in $Nodes) {
    if ($Node.InnerXml -ne "") {
        $Node.ParentNode.RemoveChild($Node)
    }
}
# Save file in UTF-8
$ConfigFileEncoding = New-Object System.Text.UTF8Encoding($false)
$ConfigFileWriter = New-Object System.XML.XMLTextWriter("C:\Temp\out.xml", $ConfigFileEncoding)
$ConfigFileWriter.Formatting = 'Indented'
$FileContent.Save($ConfigFileWriter)
$ConfigFileWriter.Close()