Получить простой текст из HTML в .NET - PullRequest
22 голосов
/ 03 мая 2011

Каков наилучший способ получить текстовую строку из строки HTML?

public string GetPlainText(string htmlString)
{
    // any .NET built in utility?
}

Заранее спасибо

Ответы [ 5 ]

37 голосов
/ 03 мая 2011

Вы можете использовать MSHTML, который может быть довольно простительным;

//using microsoft.mshtml
HTMLDocument htmldoc = new HTMLDocument();
IHTMLDocument2 htmldoc2 = (IHTMLDocument2)htmldoc;
htmldoc2.write(new object[] { "<p>Plateau <i>of<i> <b>Leng</b><hr /><b erp=\"arp\">2 sugars please</b> <xxx>what? &amp; who?" });

string txt = htmldoc2.body.outerText;

Плато Ленга 2 сахара, пожалуйста, что? и кто?

23 голосов
/ 03 мая 2011

Насколько мне известно, встроенной утилиты нет, но в зависимости от ваших требований вы можете использовать регулярные выражения для удаления всех тегов:

string htmlString = @"<p>I'm HTML!</p>";
Regex.Replace(htmlString, @"<(.|\n)*?>", "");
5 голосов
/ 03 мая 2011

В платформе нет встроенного решения.

Если вам нужно разобрать HTML, я получил хороший опыт использования библиотеки под названием HTML Agility Pack .
Он анализирует файл HTML и предоставляет доступ к нему через DOM, аналогично классам XML.

2 голосов
/ 17 августа 2015

Лично я нашел сочетание regex и HttpUtility как лучшее и самое короткое решение.

Return HttpUtility.HtmlDecode(
                Regex.Replace(HtmlString, "<(.|\n)*?>", "")
                )

Это удаляет все теги, а затем декодирует любые дополнительные функции, такие как &lt; или * 1005.*

1 голос
/ 03 мая 2011

Для этого не существует встроенного метода .NET. Но, как указал @rudi_visser, это можно сделать с помощью Регулярных выражений .

Если вам нужно удалить не только теги (т. Е. Повернуть & ampacirc; на â ), вы можете использовать более сложное решение, например, найдено здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...