Встроена функция .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 = "<foo><bar>test</bar></foo>"
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 = "<foo><bar>test</bar></foo>";
Console.WriteLine(System.Web.HttpUtility.HtmlDecode(p));
Ответ 3
Используйте System.Net.WebUtility.HtmlDecode с .NET 4.0, если довольно печатная версия не важна.
Ответ 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, и не стесняйтесь добавлять больше, что я, возможно, пропустил! Ура!:)