如何使用HtmlAgilityPack从html中获取父行节点的计数

本文关键字:节点 获取 HtmlAgilityPack 何使用 html | 更新日期: 2023-09-27 18:19:31

下面是我的html页面:

使用Html Agility Pack,我需要获得Main Table Main Rows。意思是在下页中,只有一个主表,主表下只有三个主行。

我需要得到3的计数,不包括所有内部TR。

请帮忙。

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>

代码:

  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)
              {
              }
          }

如何使用HtmlAgilityPack从html中获取父行节点的计数

您正在选择所有的表。

试着只选择身体的子表,比如:

SelectSingleNode("//body/table");

然后,计算该节点中的TR。

或者,尝试一步到位:

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