Comment décoder une chaîne en chaîne XML en C #

J’ai une chaîne (à partir d’un élément CDATA) qui contient une description de XML. J’ai besoin de décoder cette chaîne en une nouvelle chaîne qui affiche correctement les caractères en utilisant C #

Chaîne existante:

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

Chaîne recherchée:

   123NY 

Regardez la méthode HttpUtility.HtmlDecode .

Vous pouvez utiliser System.Net.WebUtility.HtmlDecode au lieu de HttpUtility.HtmlDecode

Utile si vous ne voulez pas de référence System.Web et préférez System.Net .

Comme Kirill et msarchet l’ont dit, vous pouvez utiliser HttpUtility.HtmlDecode partir de System.Web . Il échappe à peu près n’importe quoi correctement.

Si vous ne souhaitez pas faire référence à System.Web vous pouvez utiliser une astuce qui prend en charge tous les échappements XML, mais pas les échappements spécifiques à HTML, comme é :

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

Vous pouvez également utiliser un RegEx ou une simple ssortingng.Replace mais cela ne prend en charge que l’échappement XML de base. Des choses comme А ou é sont des exemples qui seraient plus difficiles à supporter.

Vous pouvez utiliser HTML.Raw . De cette façon, le balisage n’est pas codé.

Il vous suffit de remplacer les caractères masqués par leurs originaux.

 ssortingng ssortingngWanted= existingSsortingng.Replace("<", "<") .Replace("&", "&") .Replace(">", ">") .Replace(""", "\"") .Replace("'", "'"); 

Son WebUtility.HtmlDecode maintenant de System.Net.

Vous pouvez également envisager la méthode d’parsing statique de XDocument . Je ne suis pas sûr de savoir comment cela se compare aux autres mentionnés ici, mais il semble bien parsingr ces chaînes.

Une fois que vous obtenez le XDocument résultant, vous pouvez vous retourner avec ToSsortingng pour récupérer la chaîne:

 ssortingng parsedSsortingng = XDocument.Parse("").ToSsortingng();