请考虑这种情况:
我们有两个网页。一个包含一些控件的简单页面和Execute
首页并获得输出HTML
的另一个页面。例如:
StringWriter textWriter = new StringWriter();
HttpContext.Current.Server.Execute("Blinker.aspx", textWriter);
Label1.Text= Server.HtmlEncode(textWriter.ToString());
并返回此(例如):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> </title>
</head>
<body>
<form method="post" action="Blinker.aspx" id="form1">
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE2MTY2ODcyMjlkZKwUTjEtU7qJweOD/x+Op0ROdM+jDqyILuizFGhjOJQj" />
</div>
<div class="blink"> Some Test</div>
</form>
</body>
</html>
问题是如果我只想:
<div class="blink"> Some Test</div>
我如何从C#中的输出html中获取它?
感谢
答案 0 :(得分:4)
这是一个可爱的HTML解析器,通常建议使用它。这将需要格式错误的HTML并按摩它到XHTML,然后是一个可遍历的DOM,比如XML类。因此,对于您在野外找到的代码非常有用。
答案 1 :(得分:1)
以下是选项
答案 2 :(得分:1)
HtmlElementCollection tData = wb.Document.GetElementsByTagName("div");
foreach (HtmlElement td in tData)
{
string name = "";
if (td.GetAttribute("classname") == "blink")
{
name = td.InnerText;
}
}
答案 3 :(得分:0)
我们在其中一个项目中遇到了相同的情况。我会建议Regex
和HTMLAgilityPack
使用Agilitypack,您可以使用C#代码从网页中过滤掉特定内容,并且还有LINQ
然后,如果您需要获取Div中的任何特定文本或任何单个值,您可以使用正则表达式。
希望这有帮助