Comment obtenir le nombre de nœuds de lignes parent à partir d'un code HTML à l'aide de HtmlAgilityPack

c# html-agility-pack

Question

Ci-dessous ma page HTML:

En utilisant HTML Agility Pack, je dois obtenir les lignes principales de la table principale. Signifie dans la page ci-dessous, Un seul tableau principal et seulement 3 lignes principales sous le tableau principal.

Je dois obtenir le nombre de 3, excluant tous les TR internes.

S'il vous plaît aider.

HTML:

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html>
    <head>
        <title>Untitled Page</title>

    </head>
    <body style="width: 800">
        <table  width="700" style="background-repeat: no-repeat;">
            <tr>
                <td>
                    <table width="700">
                        <tr>
                            <td width="20%"></td>
                            <td width="60%" align="center" style="font-family: Arial; font-size: 12pt;"> SUMMARY </td>
                            <td width="20%"></td>
                        </tr>
                    </table>
                </td>
            </tr>
            <tr>
                <td>
                    <table width="700">
                        <tr>
                            <td width="20%"></td>
                            <td width="60%" align="center" style="font-family: Arial; font-size: 12pt;"> SUMMARY </td>
                            <td width="20%"></td>
                        </tr>
                    </table>
                </td>
            </tr>
            <tr>
                <td>
                    <table width="700">
                        <tr>
                            <td width="20%"></td>
                            <td width="60%" align="center" style="font-family: Arial; font-size: 12pt;"> SUMMARY </td>
                            <td width="20%"></td>
                        </tr>
                    </table>
                </td>
            </tr>
        </table>
    </body>
    </html>

code:

  var doc = new HtmlAgilityPack.HtmlDocument();
            doc.LoadHtml(htmlFile);


          int count = 1;
          HtmlNodeCollection tables = doc.DocumentNode.SelectNodes("//table");
          foreach (HtmlNode table in tables)
          {

              var rows = doc.DocumentNode.SelectNodes("//tr");
              //here i need to get those 3 rows only.
              //but instead i am getting all inner TR also.

              foreach (HtmlNode tr in rows)
              {

              }
          }

Réponse acceptée

Vous sélectionnez toutes les tables.

Essayez de sélectionner uniquement la table qui est un enfant de body, quelque chose comme:

SelectSingleNode("//body/table");

Ensuite, comptez les TR dans ce noeud.

Ou essayez de tout faire en une seule étape:

SelectNodes("//body/table/tr");


Related

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