2010-01-09 4 views
3

Я портирование над проектом Java, который я написал, который использует Apache Commons LangStringEscapeUtils класса (в частностиЕсть ли реализация org.apache.commons.lang.StringEscapeUtils для .Net?

escapeXml 
unescapeXml 
escapeHtml 
unescapeHtml 

методы). Есть ли эквивалент .Net? Или, возможно, какой-то вполне логичный бит кода C#, который выполняет одно и то же?

ответ

4

Использование System.Web для HTML есть:

Для XML спасаясь вы можете использовать SecurityElement.Escape method в пространстве имен System.Security. Тем не менее, нет никакого эквивалента unescape, о котором я знаю. Вам придется написать свой собственный метод, который заменяет закодированный XML, такой как < и & и т. Д. С их эквивалентами. Ссылка на метод escape перечисляет другие элементы.

+0

Я голосую это вверх как половина ответа (просто нужна часть XML) и для быстрого ответа! –

+0

См. Обновление ... добавление ссылок сейчас ... –

+0

Я собираюсь идти вперед и сказать, что вы пригвоздили это. XML unescaping на самом деле является самой важной задачей для моей задачи, но, зная, что нет места для поиска в пространстве имен системы, по крайней мере, лучше, чем чтение статей MSDN весь день. –

1

Вы можете использовать HtmlEncode и HtmlDecode для замены Html. Ваши варианты экранирования XML можно найти here.

3
public static class StringEscapeUtils 
{ 
    public static string EscapeXml(string unescaped) 
    { 
     return SecurityElement.Escape(unescaped); 
    } 

    public static string UnescapeXml(string escaped) 
    { 
     return escaped.Replace("&lt;", "<") 
         .Replace("&gt;", ">") 
         .Replace("&quot;", "\"") 
         .Replace("&apos;", "'") 
         .Replace("&amp;", "&"); 
    } 

    public static string EscapeHtml(string unescaped) 
    { 
     return HttpUtility.HtmlEncode(unescaped); 
    } 

    public static string UnescapeHtml(string escaped) 
    { 
     return HttpUtility.HtmlDecode(escaped); 
    } 
} 
+0

Мне нравится попытка обернуть эти различные функции в класс StringEscapeUtils. Эти ответы - шея и шея с точки зрения полезности. Я проголосую за них обоих, но мне нужно было выбрать «Ответ», поэтому я пошел первым. Вы, сэр, безусловно, заслужили репутацию 17.1K. –

Смежные вопросы