使用C#,我想知道如何从此示例html脚本获取Textbox值(即:john):
<TD class=texte width="50%"> <DIV align=right>Name :<B> </B></DIV></TD> <TD width="50%"><INPUT class=box value=John maxLength=16 size=16 name=user_name> </TD> <TR vAlign=center>
有多种方法可以使用敏捷包选择元素。
假设我们定义HtmlDocument如下:
HtmlDocument
string html = @"<TD class=texte width=""50%""> <DIV align=right>Name :<B> </B></DIV></TD> <TD width=""50%""> <INPUT class=box value=John maxLength=16 size=16 name=user_name> </TD> <TR vAlign=center>"; HtmlDocument htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(html);
1.简单的LINQ 我们可以使用该Descendants()方法,传递我们正在寻找的元素的名称:
Descendants()
var inputs = htmlDoc.DocumentNode.Descendants("input"); foreach (var input in inputs) { Console.WriteLine(input.Attributes["value"].Value); // John }
2.更高级的LINQ 我们可以通过使用 更高级的LINQ 来缩小范围:
var inputs = from input in htmlDoc.DocumentNode.Descendants("input") where input.Attributes["class"].Value == "box" select input; foreach (var input in inputs) { Console.WriteLine(input.Attributes["value"].Value); // John }
3. XPath 或者我们可以使用XPath。
string name = htmlDoc.DocumentNode .SelectSingleNode("//td/input") .Attributes["value"].Value; Console.WriteLine(name); //John