Como descodificar o texto para o texto XML em C#

tenho uma string (de um elemento CDATA) que contém a descrição do XML. Preciso de descodificar este texto para um novo texto que mostra os caracteres correctamente usando C#

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

Texto Procurado:

<?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>
Author: Kirill Polishchuk, 2011-07-20

7 answers

Olha para HttpUtility.HtmlDecode Método.

 29
Author: Kirill Polishchuk, 2011-07-20 05:00:01

Pode usar System. Net. WebUtility. HtmlDecode em vez de HttpUtility.HtmlDecode

Útil se não quiser o sistema .Web referência e preferência System.Net em vez disso.

 33
Author: matabares, 2014-10-28 16:06:44

AsKirill emsarchet said, you can use HttpUtility.HtmlDecode de System.Web. Escapa a quase tudo correctamente.

Se não quiser referenciar {[[2]}, poderá usar algum Truque que suporta todas as fugas de XML, mas não a fuga específica em HTML, como &eacute;:

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

Também pode usar um RegEx ou um string.Replace simples, mas só suportaria a fuga de XML básica. Coisas como &#x410; ou &eacute; são exemplos que seriam mais difíceis de suportar.

 6
Author: Wernight, 2012-08-09 09:23:42

Pode usar HTML.Raw. Assim a marcação não é codificada.

 1
Author: Andrei S, 2015-02-24 08:10:15
Só precisas de substituir os caracteres com os originais.
string stringWanted= existingString.Replace("&lt;", "<")
                                                   .Replace("&amp;", "&")
                                                   .Replace("&gt;", ">")
                                                   .Replace("&quot;", "\"")
                                                   .Replace("&apos;", "'");
 0
Author: Alex Jolig, 2015-05-25 03:16:36
A Sua Webutilidade.HtmlDecode agora de System.Net.
 0
Author: Sharthak Ghosh, 2017-04-05 06:12:13

Também pode considerar o método de análise estática de XDocument . Não sei como se compara a outros mencionados aqui, mas parece processar bem estas cordas.

Uma vez obtido o XDocument resultante, pode virar - se com o ToString para recuperar o texto:

string parsedString = XDocument.Parse("<My XML />").ToString();
 -1
Author: Noah Stahl, 2015-02-19 00:58:33