修改 XML 文件以清除值并将其设置为 Powershell 中的自关闭元素

Rac*_*ler 2 xml powershell

考虑以下 XML:

<A type="Something">
  <B version="1">
    <C version="1">
      <D version="1">
        <This>True</This>
        <That>True</That>
      </D>
    </C>
  </B>
</A>
Run Code Online (Sandbox Code Playgroud)

这是我迄今为止操作它的 Powershell 脚本:

[xml] $someXml = [xml] (Get-Content $myFile)
$someXml.A.B.C.D.This = "False"
$someXml.A.B.C.D.That = ""
$someXml.Save($myFile)
Run Code Online (Sandbox Code Playgroud)

如果我运行我得到

<A type="Something">
  <B version="1">
    <C version="1">
      <D version="1">
        <This>False</This>
        <That></That>
      </D>
    </C>
  </B>
</A>
Run Code Online (Sandbox Code Playgroud)

而我真正追求的是

<A type="Something">
  <B version="1">
    <C version="1">
      <D version="1">
        <This>False</This>
        <That/>
      </D>
    </C>
  </B>
</A>
Run Code Online (Sandbox Code Playgroud)

那么,问题是,如何设置That来强制元素自动关闭?

是的,我知道它们在语法上是相同的,但是我有自己的理由为什么需要它作为一个自关闭标签。

Mat*_*sen 5

IsEmpty清除内部文本值后,将节点上的属性值设置为$true

$someXml.A.B.C.D.GetElementsByTagName('That')[0].IsEmpty = $true
Run Code Online (Sandbox Code Playgroud)

当文档写入文件/输出时,这将导致折叠标签:

在此输入图像描述

  • 答对了!太感谢了! (2认同)