如何在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,则非常有用。
正如Kirill和msarchet所说,你可以使用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();