修改XML文件以清除值&在Powershell中将它设置为自闭元素

时间:2017-05-22 16:16:42

标签: 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>

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

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

如果我跑了,我就

<A type="Something">
  <B version="1">
    <C version="1">
      <D version="1">
        <This>False</This>
        <That></That>
      </D>
    </C>
  </B>
</A>

而我之后 真正

<A type="Something">
  <B version="1">
    <C version="1">
      <D version="1">
        <This>False</This>
        <That/>
      </D>
    </C>
  </B>
</A>

所以,问题是,如何设置来强制元素自动关闭?

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

1 个答案:

答案 0 :(得分:2)

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

$someXml.A.B.C.D.GetElementsByTagName('That')[0].IsEmpty = $true

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

enter image description here