powershell 修改xml. 未修改的空格项目 自动变换行了。

问题遇到的现象和发生背景

powershell 修改xml. 未修改的空格项目 自动变换行了。

遇到的现象和发生背景,请写出第一个错误信息

img

-----------------------PS----------------------------
PS D:> [xml]$x=Get-Content "D:\abc.xml"
PS D:> $x.AA.BB.c1="YY"
PS D:> [xml]$x.save("d:\ab.xml")

我只修改了C1, 结果有空格的项目 也自动被改变了(文本查看)。 请问怎么解决 谢谢。

我建议不要修改,因为这个对应打开软件的读取实现方式。

在上面的代码中,使用 [xml]$x.save("d:\ab.xml") 命令将修改后的 XML 保存到文件中时,会格式化 XML 并将其保存。为了避免这个问题,可以使用 $x.OuterXml 属性来保存 XML,而不是使用 [xml]$x.save("d:\ab.xml") 命令。

PS D:> [xml]$x=Get-Content "D:\abc.xml"
PS D:> $x.AA.BB.c1="YY"
PS D:> $x.OuterXml > "d:\ab.xml"

这样就可以保存原始XML格式, 避免空格被改变.
望采纳!

这是因为在 PowerShell 中修改 XML 文件时,如果对节点进行修改,它会自动格式化输出。为了避免这种情况,可以在保存文件之前,使用 $x.OuterXml 来获取已修改的 XML 字符串,然后将其写入新文件中。

例如:

$xml = [xml](Get-Content "D:\abc.xml")
$xml.AA.BB.c1 = "YY"
$xmlString = $xml.OuterXml
$xmlString | Out-File "d:\ab.xml" -Encoding UTF8

这样就可以保证格式不变。

那个¥符号是不是错了,感觉应该是$才对啊