我使用PowerShell从XML文件CDATA sectiona读取字符串,它包含PowerShell esacpe字符(`)作为字符串内容的一部分。当PowerShell正在读取和写入此内容时,它正在删除转义字符,这会导致使用相同内容时出现问题。
我无法在输入中添加像``这样的双转义序列,因为它是由用户提供的,我们不能限制用户使用它。
如何通过PowerShell正确处理?
答案 0 :(得分:3)
我无法重现你的问题。需要更多信息。
的test.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<exampleOfACDATA>
<![CDATA[
This is Graimer`s [CDATA[]] test.
Notice that I just used a backtick in my text,
which is PowerShell's escape character.
I'm gonna store this in `$s` in PS.
]]>
</exampleOfACDATA>
Powershell的
PS > $xml = [xml](Get-Content .\Desktop\test.xml)
$s = $xml.exampleOfACDATA."#cdata-section"
$s
This is Graimer`s [CDATA[]] test.
Notice that I just used a backtick in my text,
which is PowerShell's escape character.
I'm gonna store this in `$s` in PS.
通常,为了确保特殊字符的行为与普通字符一样,变量不会扩展等,请在字符串周围使用单引号'text'
。当你从其他来源(函数,文件......)中获取字符串时,这就是powershell的正常行为。