2011-06-07 12 views

Respuesta

14

No analice el HTML usted mismo, existen bibliotecas de análisis que pueden hacer eso por usted. Junto con el HTML Agility Pack y LINQ, puede hacer un trabajo corto de esto.

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); 
} 
+0

con algunas pequeñas personalizaciones, funciona como un encanto –

+1

¿Esto cuidar de colspans y un estilo de mesa (CSS)? Esto parece que simplemente traduciría los datos y el marcado del elemento – user327999

+0

@ user327999: no, esto es solo un mapeo de uno a uno. DataTables no tiene tal cosa de todos modos AFAIK. –

Cuestiones relacionadas