3

我正在尝试显示 xml 中存在的特殊字符。我设置了以下条件:

        if (text.Contains('<'))
        {
            text.Replace("<", "&lt;");
        }
        if (text.Contains('>'))
        {
            text.Replace(">", " &gt;");
        }
        if (text.Contains('&'))
        {
            text.Replace("&", " &amp;");
        }
        if (text.Contains('>'))
        {
            text.Replace("", "&quot;");
        }  

但是这些逃脱了显而易见的字符。
有人能告诉我如何显示这些特殊字符。

4

2 回答 2

9

您的直接问题是您忽略了string.Replace- 字符串在 .NET 中是不可变的,因此您需要:

result = result.Replace(...);

但是,您最好不要自己尝试这样做 - 改用 XML API。例如,如果你想创建一个包含 a 元素的 XML 文档<,你可以使用:

var doc = new XDocument(new XElement("root", "<"));
Console.WriteLine(doc);

它会在输出时自动转义,所以你得到:

<root>&lt;</root>

您几乎应该自己处理 XML - XML API 是您的朋友,而 LINQ to XML 是一个非常好的工具。

于 2013-08-08T07:57:46.753 回答
6

你需要SecurityElement.Escape

var result = SecurityElement.Escape(text);
于 2013-08-08T07:56:33.750 回答