I have a html table.I want to convert this into a datatable. What is the best way of doing so? Thanks
Don't parse the HTML yourself, there are parsing libraries out there that can do that for you. Coupled with the HTML Agility Pack and LINQ, you can make short work of this.
var doc = new HtmlDocument();
doc.Load(url);
var nodes = doc.DocumentNode.SelectNodes("//table/tr");
var table = new DataTable("MyTable");
var headers = nodes[0]
.Elements("th")
.Select(th => th.InnerText.Trim());
foreach (var header in headers)
{
table.Columns.Add(header);
}
var rows = nodes.Skip(1).Select(tr => tr
.Elements("td")
.Select(td => td.InnerText.Trim())
.ToArray());
foreach (var row in rows)
{
table.Rows.Add(row);
}
...some years later...
var nodes = doc.DocumentNode.SelectNodes("//table/tr");
line has a typo and needs to be with double forward slash after 'table' and everything works like a charm
var nodes = doc.DocumentNode.SelectNodes("//table//tr");