Встроена функция .NET для unescaping символов в потоке XML?

Итак, у меня есть некоторые данные в форме:

<foo><bar>test</bar></foo>

Какие .NET-классы/функции я хотел бы использовать, чтобы преобразовать это в что-то красивое и записать его в файл, выглядящий примерно так:

<foo>
   <bar>
       test
   </bar>
</foo>

Будь конкретным для функций и классов, пожалуйста, не просто "используйте System.XML". Кажется, существует много разных способов сделать что-то в .NET с помощью XML: (

Спасибо

Ответ 1

Использование класса System.Xml.XmlDocument...

Dim Val As String = "&lt;foo&gt;&lt;bar&gt;test&lt;/bar&gt;&lt;/foo&gt;"
Dim Xml As String = HttpUtility.HtmlDecode(Val)

Dim Doc As New XmlDocument()
Doc.LoadXml(Xml)

Dim Writer As New StringWriter()
Doc.Save(Writer)

Console.Write(Writer.ToString())

Ответ 2

вы можете использовать этот код.

string p = "&lt;foo&gt;&lt;bar&gt;test&lt;/bar&gt;&lt;/foo&gt;";
Console.WriteLine(System.Web.HttpUtility.HtmlDecode(p));

Ответ 4

Здесь, который я использую, передайте в строке Xml, установите ToXml в значение true, если вы хотите преобразовать строку, содержащую "< foo/ > <bar → к собственному эквиваленту xml," #lt; foo/# gt; #lt; bar # gt "; - заменить хэш амперсандом, так как этот редактор продолжает избегать его... аналогично, если ToXml является ложным, он преобразует строку, содержащую строку #lt; foo/# gt; #lt бар; #;" GT (замените хэш амперсандом) на "< foo/ > < bar/ > "

string XmlConvert(string sXml, bool ToXml){
    string sConvertd = string.Empty;
    if (ToXml){
       sConvertd = sXml.Replace("<", "#lt;").Replace(">", "#gt;").Replace("&", "#amp;");
    }else{
       sConvertd = sXml.Replace("#lt;", "<").Replace("#gt;", ">").Replace("#amp;", "&");
    }
    return sConvertd;
}

( заменить хэш на амперсанд, так как этот редактор продолжает избегать его в предварительных тегах)

Изменить: Благодаря technophile, чтобы указать на очевидное, но предназначен для покрытия тегов XML только. Это суть функции, которую можно легко расширить, чтобы охватить другие теги XML, и не стесняйтесь добавлять больше, что я, возможно, пропустил! Ура!:)