显示XML特殊字符

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;");
        }  

但是这些转义字符显然是无法显示的。
有人能告诉我如何显示这些特殊字符吗?


6
你对"display"是什么意思?请再次提供你正在使用的XML示例,这已经是第n次了。 - Tim
@Tim:我想在我运行时创建的PowerPoint演示文稿上显示它们。 - Nitish
如果您的XML文件包含<>字符,则表示您的文件无效。 如果您想显示特定字符,则可以执行带有循环的查询以检查所有属性(或将文件打开为文本文件)。 - glautrou
你需要停止将XML视为字符串来处理。将XML视为字符串会导致非常脆弱的“解决方案”。正如Jon在他的回答中指出的那样,有很多优秀的XML API可用,可以为您完成所有繁重的工作。 - Damien_The_Unbeliever
2个回答

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则是一个非常好的选择。


6

1
没有迹象表明原作者在进行任何安全方面的操作。虽然这可能会实现所需的功能,但我认为这不是最干净的方法。 - Jon Skeet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接