转义和取消转义无效字符

Max*_*eue 2 c# security escaping

这应该很容易。我有一个我转义的字符串,如下所示:

string originalString = "M&M";
string escapedString = System.Security.SecurityElement.Escape(originalString);//M&M
Run Code Online (Sandbox Code Playgroud)

目前很好

string unEscapedString = System.Security.SecurityElement.FromString(escapedString).Text;
Run Code Online (Sandbox Code Playgroud)

期待回到 M&M 但得到“对象未设置”

假设字符串应该是 xml 格式,所以在这种情况下我应该做什么的任何帮助都会有帮助。

Ruf*_*s L 5

您可以使用System.Net.WebUtility类的静态HtmlDecode方法来做到这一点:

string original = "M&M";
string escaped = System.Security.SecurityElement.Escape(original);
string unescaped = System.Net.WebUtility.HtmlDecode(escaped);
Run Code Online (Sandbox Code Playgroud)

代码无法正常工作的原因是该FromString方法需要有效的 xml。请参阅此处的文档:

参数
xml String
用于创建安全元素的 XML 编码字符串。

如果在字符串周围添加 xml 标记,则可以使代码示例正常工作:

string unescaped = SecurityElement.FromString($"<x>{escaped}</x>").Text;
Run Code Online (Sandbox Code Playgroud)