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>
7 answers
Olha para HttpUtility.HtmlDecode
Método.
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.
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 é
:
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 А
ou é
são exemplos que seriam mais difíceis de suportar.
Pode usar HTML.Raw. Assim a marcação não é codificada.
string stringWanted= existingString.Replace("<", "<")
.Replace("&", "&")
.Replace(">", ">")
.Replace(""", "\"")
.Replace("'", "'");
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();