内置.NET函数,用于在XML流中转义字符?

时间:2010-02-04 21:47:22

标签: c# .net xml

所以,我有一些以下形式的数据:

<foo><bar>test</bar></foo>

我希望使用哪些.NET类/函数将其转换为漂亮的东西,然后将其写入文件,如下所示:

<foo>
   <bar>
       test
   </bar>
</foo>

请在功能和类上具体,而不仅仅是“使用System.XML”。在使用XML的.NET中,似乎有很多不同的方法:(

由于

4 个答案:

答案 0 :(得分:15)

使用System.Xml.XmlDocument类......

Dim Val As String = "&lt;foo&gt;&lt;bar&gt;test&lt;/bar&gt;&lt;/foo&gt;"
Dim Xml As String = HttpUtility.HtmlDecode(Val)

Dim Doc As New XmlDocument()
Doc.LoadXml(Xml)

Dim Writer As New StringWriter()
Doc.Save(Writer)

Console.Write(Writer.ToString())

答案 1 :(得分:8)

您可以使用此代码。

string p = "&lt;foo&gt;&lt;bar&gt;test&lt;/bar&gt;&lt;/foo&gt;";
Console.WriteLine(System.Web.HttpUtility.HtmlDecode(p));

答案 2 :(得分:4)

如果漂亮打印不重要,请使用.NET 4.0以来的System.Net.WebUtility.HtmlDecode

答案 3 :(得分:-3)

如果您要转换包含“&lt; foo /&gt;&lt; bar /&gt;”的字符串,请使用以下内容,传入Xml字符串,将ToXml设置为true到本机xml等价物,“#lt; foo / #gt; #lt; bar #gt;” - 用&符号 替换哈希值,因为此编辑器一直在转义它...同样,如果ToXml为false,它将转换包含“#”的字符串LT;富/#GT; #lt;棒#gt;”中( 用&符号 替换哈希)到“&lt; foo /&gt;&lt; bar /&gt;”

string XmlConvert(string sXml, bool ToXml){
    string sConvertd = string.Empty;
    if (ToXml){
       sConvertd = sXml.Replace("<", "#lt;").Replace(">", "#gt;").Replace("&", "#amp;");
    }else{
       sConvertd = sXml.Replace("#lt;", "<").Replace("#gt;", ">").Replace("#amp;", "&");
    }
    return sConvertd;
}

用&符号 替换哈希值,因为此编辑器会在预标签中将其转义)

修改:感谢 technophile 指出显而易见的内容,但其目的仅限于 XML标签。这是该功能的要点,可以很容易地扩展到覆盖其他XML标签,并随意添加我可能错过的更多!干杯! :)