我有一个包含XML描述的字符串(来自CDATA元素)。我需要将此字符串解码为一个新字符串,该字符串使用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>
字符串通缉:
<?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>
答案 0 :(得分:38)
您可以使用System.Net.WebUtility.HtmlDecode代替HttpUtility.HtmlDecode
如果您不想要System.Web引用并且更喜欢System.Net,则非常有用。
答案 1 :(得分:33)
看看:
System.Web
的HttpUtility.HtmlDecode
来自System.Net
WebUtility.HtmlDecode
醇>
答案 2 :(得分:6)
如 Kirill 和 msarchet 所述,您可以使用System.Web
中的HttpUtility.HtmlDecode
。它几乎可以正常逃脱。
如果您不想引用System.Web
,可以使用一些技巧,它支持所有XML转义但不支持特定于HTML的转义,如é
:
public static string XmlDecode(string value) {
var xmlDoc = new XmlDocument();
xmlDoc.LoadXml("<root>" + value + "</root>");
return xmlDoc.InnerText;
}
您还可以使用 RegEx 或简单string.Replace
,但它只支持基本的XML转义。像А
或é
这样的例子是难以支持的例子。
答案 3 :(得分:1)
您可以使用 HTML.Raw 。这样就不会对标记进行编码。
答案 4 :(得分:0)
您只需要将原始人物替换为原始人物。
string stringWanted= existingString.Replace("<", "<")
.Replace("&", "&")
.Replace(">", ">")
.Replace(""", "\"")
.Replace("'", "'");
答案 5 :(得分:0)
HttpUtility.HtmlDecode(xmlString)
将解决此问题
答案 6 :(得分:-1)
您也可以考虑XDocument中的静态解析方法。我不确定它与这里提到的其他人相比如何,但它似乎很好地解析了这些字符串。
获得生成的XDocument后,您可以使用ToString转回来获取字符串:
string parsedString = XDocument.Parse("<My XML />").ToString();