我有一个相当大的XML文件,我需要replace内的一些连接string。
我使用下面的代码来replacestring:
$temp = Get-Content .\bigxmlfile.xml $temp.replace("STRING1","STRING2") | out-file .\bigxmlfile.xml -force
这改变了string很好,但由于某种原因总是最终破坏了XML。 我无法弄清楚为什么。
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
如果您使用不支持XML的工具来处理XML,您将始终面临这种风险。 如果您想对XML进行转换,那么最好的工具就是XML转换语言XSLT。
您是否尝试过使用Import-CLIXML而不是Get-Content?
我不知道如何处理大或复杂的XML文件,但它是值得一试。