【问题标题】:Save adds return linebreaks to XML when elements are blank当元素为空时,Save 将返回换行符添加到 XML
【发布时间】:2018-08-27 07:27:40
【问题描述】:

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

如果我用一些数据填充内部文本,那么它会根据需要工作(您会在一行上获得开始标记、内部文本和结束标记),如下所示...

<element>value</element>

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

<element></element>

但是,当内部文本有一个空字符串时,它会添加一个回车和换行,这不是预期的!它最终看起来如下所示:

<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")
}

【问题讨论】:

  • 原始的Subnet_Network_41.xml 文件是什么样的?

标签: xml powershell


【解决方案1】:

我自己解决了这个问题。我已经使用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/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-14
    • 1970-01-01
    • 2012-05-31
    • 1970-01-01
    • 2012-04-14
    相关资源
    最近更新 更多