如何在c#中解码字符串到XML字符串
本文关键字:字符串 XML 解码 | 更新日期: 2023-09-27 18:02:55
我有一个包含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>
-
HttpUtility.HtmlDecode
fromSystem.Web
-
WebUtility.HtmlDecode
fromSystem.Net
你可以使用System.Net.WebUtility.HtmlDecode来代替HttpUtility。HtmlDecode
如果您不需要System,可以使用。Web参考和首选系统。净。
正如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转义。像А
或é
这样的例子将更难支持。
HttpUtility.HtmlDecode(xmlString)
会解决这个问题
可以使用HTML.Raw。这样标记就不会被编码。
您只需要将转义字符替换为原始字符。
string stringWanted= existingString.Replace("<", "<")
.Replace("&", "&")
.Replace(">", ">")
.Replace(""", "'"")
.Replace("'", "'");
您也可以考虑使用XDocument中的静态解析方法。我不确定它与这里提到的其他字符串相比如何,但它似乎可以很好地解析这些字符串。
得到结果XDocument后,可以使用ToString返回字符串:
string parsedString = XDocument.Parse("<My XML />").ToString();