我有一个相当大的 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 文件的效果如何,但值得一试。