Wie dekodiert man String in XML-String in C #

Ich habe eine Zeichenfolge (aus einem CDATA-Element), die eine Beschreibung von XML enthält. Ich muss diese Zeichenfolge in eine neue Zeichenfolge dekodieren, die die Zeichen korrekt mit C # anzeigt

Vorhandener String:

<?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> 

Gesucht:

   123NY 

Sehen Sie sich die HttpUtility.HtmlDecode Methode an.

Sie können System.Net.WebUtility.HtmlDecode anstelle von HttpUtility.HtmlDecode verwenden

Nützlich, wenn Sie System.Web nicht referenzieren möchten und stattdessen System.Net bevorzugen.

Wie Kirill und msarchet sagten, können Sie HttpUtility.HtmlDecode von System.Web . Es entkommt so ziemlich alles richtig.

Wenn Sie nicht auf System.Web verweisen möchten, können Sie einen Trick verwenden, der alle XML- é unterstützt, aber nicht HTML-spezifische é wie é :

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

Sie könnten auch eine RegEx oder eine einfache string.Replace aber sie würde nur das grundlegende XML-Escaping unterstützen. Dinge wie А oder é Beispiele, die schwerer zu unterstützen wären.

Sie können HTML.Raw verwenden . Auf diese Weise wird das Markup nicht codiert.

Sie müssen nur die scaped Zeichen mit ihren Originalen ersetzen.

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

Sein WebUtility.HtmlDecode jetzt von System.Net.

Sie können auch die statische Analysemethode von XDocument aus betrachten . Ich bin mir nicht sicher, wie es mit anderen hier genannten vergleicht, aber es scheint, diese Saiten gut zu analysieren.

Sobald Sie das resultierende XDocument erhalten, können Sie mit ToString die Zeichenfolge zurückholen:

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