c#:转义XML字符串并写入HTML

时间:2015-02-24 11:53:55

标签: c# html xml

我正在阅读XML文件,我想将实际内容写入HTML。我认为问题是HtmlTextWriter将我的XML标记视为HTML标记。我尝试过使用HttpUtility.HtmlEncode / Decode和SecurityElement.Escape但这些都不起作用。如何转义标记,以便我可以使用文字字符串写入HTML页面。

private string WriteXmlToHtml()
    {
        StringWriter stringWriter = new StringWriter();

        using (HtmlTextWriter writer = new HtmlTextWriter(stringWriter))
        {
            int counter = 0;
            string line;

            StreamReader file = new StreamReader("test.xml");

            while ((line = file.ReadLine()) != null)
            {
                //HttpUtility.HtmlDecode(line);
                //System.Security.SecurityElement.Escape
                writer.Write(line);
                counter++;
            }
        }

        return stringWriter.ToString();
    }

2 个答案:

答案 0 :(得分:1)

//编辑:我已经无耻地实施了Xanatos&#39; <pre>标记到输出字符串中。来自评论

writer.Write(String.Format("<pre>{0}</pre>",HttpUtility.HtmlEncode(line)));

产生以下输出:

<?xml version="1.0" encoding="utf-8"?>
<Settings>
 <Code>D:picture\simple</Code>
...

加上它在每一行后添加一个换行符。不幸的是,它没有留下压痕。

这应该在你的html文件中呈现为有效的xml。

答案 1 :(得分:0)

尝试使用:

private string WriteXmlToHtml()
{
    string filePath = @"d:\abc.xml";
    return Server.HtmlEncode(File.ReadAllText(filePath));
}