Cómo decodificar cadena a cadena XML en C #

Tengo una cadena (de un elemento CDATA) que contiene una descripción de XML. Necesito decodificar esta cadena en una nueva cadena que muestra los caracteres correctamente usando C #

Cadena existente:

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

Cadena deseada

   123NY 

Mire el método HttpUtility.HtmlDecode .

Puede usar System.Net.WebUtility.HtmlDecode en lugar de HttpUtility.HtmlDecode

Útil si no quiere referencia de System.Web y prefiere System.Net en su lugar.

Como dijeron Kirill y msarchet , puedes usar HttpUtility.HtmlDecode de System.Web . Se escapa de casi todo lo correcto.

Si no desea hacer referencia a System.Web , puede usar algún truco que admita todos los escapes XML pero no escapes específicos de HTML como é :

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

También podría usar un RegEx o una string.Replace simple. string.Replace pero solo string.Replace escapado XML básico. Cosas como А o é son ejemplos que serían más difíciles de apoyar.

Puedes usar HTML.Raw . De esa forma, el marcado no está codificado.

Solo necesita reemplazar los caracteres escamados con sus originales.

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

Su WebUtility.HtmlDecode ahora de System.Net.

También puede considerar el método de análisis estático de XDocument . No estoy seguro de cómo se compara con otros mencionados aquí, pero parece analizar bien estas cadenas.

Una vez que obtenga el XDocument resultante, podría darle la vuelta con ToString para recuperar la cadena:

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