显示xml特殊字符

时间:2013-08-08 07:53:57

标签: c#

我正在尝试显示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;");
        }  

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

2 个答案:

答案 0 :(得分:9)

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

result = result.Replace(...);

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

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

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

<root>&lt;</root>

你应该从不自己进行XML处理 - XML API是你的朋友,LINQ to XML是非常好的。

答案 1 :(得分:6)

您需要SecurityElement.Escape

var result = SecurityElement.Escape(text);