Ответ 1
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
string s = doc.DocumentNode.SelectSingleNode("//body").InnerText;
Например:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>title</title>
</head>
<body>
<a href="aaa.asp?id=1"> I want to get this text </a>
<div>
<h1>this is my want!!</h1>
<b>this is my want!!!</b>
</div>
</body>
</html>
и результат:
I want to get this text
this is my want!!
this is my want!!!
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
string s = doc.DocumentNode.SelectSingleNode("//body").InnerText;
Используйте эту функцию...
public string Strip(string text)
{
return Regex.Replace(text, @"<(.|\n)*?>", string.Empty);
}
Я бы рекомендовал использовать что-то вроде HTMLTidy.
Вот учебник об этом, чтобы вы начали.
Почему вы хотите сделать его серверным?
Для этого вам нужно создать элемент контейнера runat="server"
, а затем взять innerText
элемента.
Вы можете сделать то же самое в javascript без создания элемента runat = "server"
Если вы просто хотите удалить теги html, используйте регулярное выражение, которое удаляет что-либо между "<" и " > ".
Вы можете начать с этой простой функции ниже. Отказ от ответственности: этот код подходит для базового HTML, но не будет обрабатывать все допустимые ситуации в HTML и крайние случаи. Примером могут служить теги в кавычках. Преимущество этого кода заключается в том, что вы можете легко выполнить выполнение в отладчике, и его можно легко модифицировать, чтобы соответствовать конкретным для вас случаям кросс.
public static string RemoveTags(string html)
{
string returnStr = "";
bool insideTag = false;
for (int i = 0; i < html.Length; ++i)
{
char c = html[i];
if (c == '<')
insideTag = true;
if (!insideTag)
returnStr += c;
if (c == '>')
insideTag = false;
}
return returnStr;
}