Importer des données d'un tableau HTML vers DataTable en C #

c# datatable html html-agility-pack

Question

Je voulais importer des données de la table HTML (voici un lien http://road2paris.com/wp-content/themes/roadtoparis/api/generated_table_august.html ) et afficher les 16 premières personnes dans DataGridView dans mon formulaire. D'après ce que j'ai lu, la meilleure façon de le faire est d'utiliser le pack HTML Agility. Je l'ai donc téléchargé et inclus dans mon projet. Je comprends que la première chose à faire est de charger le contenu du fichier HTML. C'est le code que j'ai utilisé pour le faire:

        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);

Et puis je me suis retrouvé coincé. Je ne sais pas comment remplir mes données avec les données de la table html. J'ai essayé de nombreuses solutions mais rien ne semble fonctionner correctement. Je serais heureux si quelqu'un pouvait m'aider avec ça.

Réponse acceptée

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());

Vous aurez besoin de la bibliothèque HTML Agility Pack pour utiliser ce code.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi