当元素为空时,Save会将返回换行符添加到XML

时间:2016-10-31 06:30:55

标签: xml powershell

我正在加载一个XML文档,其中包含一些没有内嵌文本的标记。

如果我用一些数据填充innertext,那么它可以根据需要工作(你可以在一行上打开标签,innertext和结束标签),如下所示......

<element>value</element>

问题出现在没有值的标签上。这些应该以与上面相同的方式显示,但当然没有价值,例如:

<element></element>

然而,当innertext有一个空字符串时,它会添加一个回车符&amp;换行不是预期的!最终看起来如下:

<element>
</element>

我的代码:

$input_dir  = "F:\uma\zz"
$output_dir = "F:\uma\zz"
[xml]$xdoc  = Get-Content "$input_dir\Subnet_Network_41.xml"
$inprange   = 5
foreach ($i in $inprange) {
    $xdoc.Subnet.Id   = "Network_$i"
    $xdoc.Subnet.Name = "Network_$i"
    $xdoc.Save("$output_dir\Subnet_Network_$i.xml")
}

1 个答案:

答案 0 :(得分:2)

我自己解决了这个问题。我使用Select-xml来读取xml文件并且它有效。它在保存xml文档时没有添加返回换行符。下面是工作代码。

$input_dir  = "F:\uma\zz"
$output_dir = "F:\uma\zz"
$xdoc = ( Select-Xml -Path $input_dir\Subnet_Network_41.xml -XPath / ).Node
$inprange   = 5
foreach ($i in $inprange) {
    $xdoc.Subnet.Id   = "Network_$i"
    $xdoc.Subnet.Name = "Network_$i"
    $xdoc.Save("$output_dir\Subnet_Network_$i.xml")
}

要详细了解Select-xml,请参阅以下博客:https://blog.stangroome.com/2014/02/10/powershell-select-xml-versus-get-content/