我在尝试替换XML文件中的属性时遇到了几个问题,同时保留了空白.
$xml = [xml](get-content data.xml)
$xml.Path.To.Attribute = $value
set-content data.xml [String]$value
Run Code Online (Sandbox Code Playgroud)
结果:删除了不重要的空格(即换行符)
$xml = new-object xml
$xml.PreserveWhitespace = true
$xml.PreserveWhitespace
Run Code Online (Sandbox Code Playgroud)
结果:PreserveWhitespace仍然存在false
$xml = get-content data.xml
$xml = [regex]::replace($xml, "pattern", "replacement")
set-content data.xml $xml
Run Code Online (Sandbox Code Playgroud)
结果:[regex]::replace弄乱了行尾
我在这里服用疯狂的药片吗?
问题都是相关的:Get-Content返回文本文件的行,而不是文本本身.当强制转换为字符串时,这些行将完全组合在一起.
最好的解决方案是使用:
$xml = [xml]([System.IO.File]::ReadAllText("data.xml"))
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为PreserveWhiteSpace是一个布尔值:
$xml = new-object xml
$xml.PreserveWhitespace = true
$xml.PreserveWhitespace
Run Code Online (Sandbox Code Playgroud)
使用:
xml.PreserveWhitespace = $true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3908 次 |
| 最近记录: |