Html Agility Pack - boucle à travers les lignes et les colonnes

c# html-agility-pack

Question

Je commence à peine à analyser certains fichiers HTML à l'aide du langage C # et de HtmlAgilityPack.

J'essaie d'obtenir pour chaque ligne les valeurs de deux colonnes pour les insérer dans une base de données. Mais en exécutant ce qui suit:

foreach (HtmlNode row in htmlDoc.DocumentNode.SelectNodes("//tr"))
    {
    foreach (HtmlNode cell in row.SelectNodes("//td"))
    {
    Console.WriteLine(cell.InnerText);
    }
    }

J'ai eu une erreur en parcourant tous les td et pas seulement ceux inclus dans le courant tr.

Mon html ressemble à ceci:

<table>
        <tr>            
            <th align="center" width="50"><b>column 1</b></th>          
            <th align="center" width="210"><b>column 2</b></th>                 

        </tr>   



            <tr bgcolor="#ffffff">
                <td align="left"> </td>             
                <td align="left"></td>                          

            </tr>   


            <tr bgcolor="#dddddd">
                <td align="left"> </td>             
                <td align="left"></td>                          

            </tr>   


            <tr bgcolor="#ffffff">
                <td align="left"> </td>             
                <td align="left"></td>                          

            </tr>

Réponse populaire

Peut être ça

var rows = doc.DocumentNode
              .SelectNodes("//tr")
              .Select((z, i) => new
                  {
                    RowNumber = i,
                    Cells = z.ChildNodes.Where(c => c.NodeType == HtmlNodeType.Element) })
              .ToList();

rows.ForEach(row => Console.WriteLine("{0}: {1}", row.RowNumber, string.Join(", ", row.Cells.Select(z => z.InnerText))));


Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow