-1

我正在使用 PowerShell 从 XML 文件 CDATA 部分中读取字符串,它包含 PowerShell 转义字符 (`) 作为字符串内容的一部分。当 PowerShell 读取和写入此内容时,它会删除转义字符,这会导致相同内容的使用出现问题。

我不能在我的输入中添加像 `` 这样的双重转义序列,因为它是由用户提供的,我们不能限制用户。

如何让 PowerShell 正确处理这个问题?

4

1 回答 1

3

我无法重现你的问题。需要更多信息。

测试.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>

电源外壳

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 的正常行为。

于 2013-04-09T17:58:42.130 回答