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
from System.Web
WebUtility.HtmlDecode
from System.Net
HttpUtility.HtmlDecode の代わりに System.Net.WebUtility.HtmlDecode を使用できます
System.Web 参照が不要で、代わりに System.Net が必要な場合に役立ちます。
Kirillおよびmsarchetが言ったように、 HttpUtility.HtmlDecode
from System.Web
。それはほとんど何でも正しくエスケープします。
参照したくない場合はSystem.Web
いくつかのtrickを使用できます。これは、すべてのXMLエスケープをサポートしますが、HTML固有のエスケープはサポートしませんé
:
public static string XmlDecode(string value) {
var xmlDoc = new XmlDocument();
xmlDoc.LoadXml("<root>" + value + "</root>");
return xmlDoc.InnerText;
}
RegExまたは単純なstring.Replace
しかし、基本的なXMLエスケープのみをサポートします。 А
またはé
は、サポートが難しい例です。
エスケープされた文字を元の文字に置き換えるだけです。
string stringWanted= existingString.Replace("<", "<")
.Replace("&", "&")
.Replace(">", ">")
.Replace(""", "\"")
.Replace("'", "'");
HttpUtility.HtmlDecode(xmlString)
はこの問題を解決します
HTML.Rawを使用できます。そのようにして、マークアップはエンコードされません。