我正在读取一个xml文件,更新一个值并将其写回来 - 对于我正在更新的文件包含一个正确的单引号’
字符这一事实,这一切都相当容易。我第一次保存文件时会被’
替换。我运行它的次数越多,它就越糟糕,文件大小开始呈指数级增长。
我已经解决了这个问题发生在ascii值超过126的任何字符上,我可以通过用’
替换’
字符来防止这种情况,但是,必须有更好的方法!
有关如何正确保存XML文件的任何建议 - 我唯一的想法是在整个xml文件中搜索具有ascii值>的任何字符; 126并替换它。
我目前的代码是:
$Path = "C:\path\to\file.xml"
[xml]$xml = Get-Content $Path
$xml.Save($Path)
答案 0 :(得分:2)
除非您的文件以允许Get-Content
自动检测编码的方式进行编码(如UTF-8或带有正确byte order mark的UTF-16),否则您需要告诉cmdlet使用哪种编码使用:
[xml]$xml = Get-Content 'C:\path\to\your.xml' -Encoding UTF8
或创建一个Xml
对象并使用其Load()
方法,该方法将使用XML前导码中指定的编码,如果遇到与该编码不匹配的字符,则会抛出错误:
$xml = New-Object Xml
$xml.Load('C:\path\to\your.xml')
答案 1 :(得分:0)
尝试像这样的事情
$Path = "C:\path\to\file.xml"
[xml]$xml = Get-Content $Path -Encoding UTF8
答案 2 :(得分:0)
指定Get-Content
Cmdlet的编码。
Get-Content $Path -Encoding ENCODING_HERE