Importa i dati dalla tabella HTML a DataTable in C #

c# datatable html html-agility-pack

Domanda

Volevo importare alcuni dati dalla tabella HTML (qui c'è un collegamento http://road2paris.com/wp-content/themes/roadtoparis/api/generated_table_august.html ) e visualizzare le prime 16 persone in DataGridView nella mia applicazione Form. Da quello che ho letto il modo migliore per farlo è usare il pacchetto Agility HTML, quindi l'ho scaricato e incluso nel mio progetto. Capisco che la prima cosa da fare è caricare il contenuto del file html. Questo è il codice che ho usato per farlo:

        string htmlCode = "";
        using (WebClient client = new WebClient())
        {
            client.Headers.Add(HttpRequestHeader.UserAgent, "AvoidError");
            htmlCode = client.DownloadString("http://road2paris.com/wp-content/themes/roadtoparis/api/generated_table_august.html");
        }
        HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();

        doc.LoadHtml(htmlCode);

E poi sono rimasto bloccato. Non so come riempire il mio datatable con i dati dalla tabella html. Ho provato molte soluzioni diverse ma nulla sembra funzionare correttamente. Sarei felice se qualcuno potesse aiutarmi con quello.

Risposta accettata

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(htmlCode);
var headers = doc.DocumentNode.SelectNodes("//tr/th");
DataTable table = new DataTable();
foreach (HtmlNode header in headers)
    table.Columns.Add(header.InnerText); // create columns from th
// select rows with td elements 
foreach (var row in doc.DocumentNode.SelectNodes("//tr[td]")) 
    table.Rows.Add(row.SelectNodes("td").Select(td => td.InnerText).ToArray());

Avrai bisogno della libreria HTML Agility Pack per utilizzare questo codice.




Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché