如何在C#中解码字符串到XML字符串

我有一个字符串(来自CDATA元素),其中包含XML的描述。 我需要将此字符串解码为一个新字符串,使用C#正确显示字符

现有字符串:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><myreport xmlns="http://test.com/rules/client"><admin><ordernumber>123</ordernumber><state>NY</state></report></myreport> 

字符串通缉:

   123NY 

看看HttpUtility.HtmlDecode方法。

您可以使用System.Net.WebUtility.HtmlDecode而不是HttpUtility.HtmlDecode

如果您不想要System.Web参考并且更喜欢System.Net,则非常有用。

正如Kirillmsarchet所说,你可以使用System.Web HttpUtility.HtmlDecode 。 它几乎可以正常逃脱。

如果您不想引用System.Web您可能会使用一些技巧来支持所有XML转义,但不支持特定于HTML的转义,例如é

 public static string XmlDecode(string value) { var xmlDoc = new XmlDocument(); xmlDoc.LoadXml("" + value + ""); return xmlDoc.InnerText; } 

您也可以使用RegEx或简单的string.Replace但它只支持基本的XML转义。 像А 或者é 是难以支持的例子。

您可以使用HTML.Raw 。 这样标记就不会被编码。

您只需要将原始角色替换为scaped角色。

 string stringWanted= existingString.Replace("<", "<") .Replace("&", "&") .Replace(">", ">") .Replace(""", "\"") .Replace("'", "'"); 

它的WebUtility.HtmlDecode现在来自System.Net。

您还可以考虑XDocument中的静态解析方法。 我不确定它与这里提到的其他人相比如何,但它似乎很好地解析了这些字符串。

获得生成的XDocument后,可以使用ToString转回来获取字符串:

 string parsedString = XDocument.Parse("").ToString();