Подтвердить что ты не робот

Как декодировать строку в строку XML в С#

У меня есть строка (из элемента CDATA), которая содержит описание XML. Мне нужно декодировать эту строку в новую строку, которая корректно отображает символы, используя С#

Существующая строка:

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

Требуется 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>
4b9b3361

Ответ 3

Как сказал Кирилл и msarchet, вы можете использовать HttpUtility.HtmlDecode от System.Web. Это почти ничего не выходит.

Если вы не хотите ссылаться на System.Web, вы можете использовать некоторый трюк , который поддерживает все экранирование XML, но не экранирование, специфичное для HTML, например &eacute;:

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

Вы также можете использовать RegEx или простой string.Replace, но он будет поддерживать только поддержку XML-экранирования. Такие вещи, как &#x410; или &eacute;, являются примерами, которые сложнее поддерживать.

Ответ 4

Вы можете использовать HTML.Raw. Таким образом, разметка не закодирована.

Ответ 5

Вам просто нужно заменить скопированные символы на свои оригиналы.

string stringWanted= existingString.Replace("&lt;", "<")
                                                   .Replace("&amp;", "&")
                                                   .Replace("&gt;", ">")
                                                   .Replace("&quot;", "\"")
                                                   .Replace("&apos;", "'");

Ответ 6

HttpUtility.HtmlDecode(xmlString) решит эту проблему

Ответ 7

Вы также можете рассмотреть метод статического анализа из XDocument. Я не уверен, как он сравнивается с другими, упомянутыми здесь, но, похоже, хорошо разбирает эти строки.

Как только вы получите полученный XDocument, вы можете обратиться к ToString, чтобы вернуть строку:

string parsedString = XDocument.Parse("<My XML />").ToString();