使用 Powershell 替换 XML 中的字符串会导致 XML 格式错误

使用 Powershell 替换 XML 中的字符串会导致 XML 格式错误

我有一个相当大的 XML 文件,需要替换其中的一些连接字符串。

我使用以下代码来替换字符串:

$temp = Get-Content .\bigxmlfile.xml
$temp.replace("STRING1","STRING2") | out-file .\bigxmlfile.xml -force

这可以很好地更改字符串,但由于某种原因,它总是会破坏 XML。我很难弄清楚为什么。

答案1

Out-File默认情况下正在写入 Unicode 文件。使用-Encoding以下命令修复此问题:

$temp = Get-Content .\bigxmlfile.xml
$temp.replace("STRING1","STRING2") | out-file .\bigxmlfile.xml -force -encoding ascii

或者,使用Set-Content

$temp = Get-Content .\bigxmlfile.xml
$temp.replace("STRING1","STRING2") | set-content .\bigxmlfile.xml -force

答案2

如果您使用不支持 XML 的工具来处理 XML,那么您将始终面临这种风险。如果您想对 XML 进行转换,那么最好的工具就是 XML 转换语言 XSLT。

答案3

您是否尝试过使用 Import-CLIXML 代替 Get-Content?
我不知道它处理大型或复杂的 xml 文件的效果如何,但值得一试。

相关内容