如何在 div 中获取 table,使用 htmlagilitypack 通过特定 id 搜索 div

How to get a table inside a div, searching div by a certain id using htmlagilitypack

有一个html喜欢

   <div id="info_tab_members">
        <div id="info_members" class="tabslevel">
            <ul>
                <li><a href="#info_tab_members_past">Past members</a></li>
                <li><a href="#info_tab_members_live">Live musicians</a></li> 
            </ul>

            <div id="info_tab_members_all">
                <div class="ui-tabs-panel">
                <!-- THIS TABLE I WANT -->
                <table class="display tblClass" cellpadding="0" cellspacing="0">....
                  <!-- DATA I WANT -->
                </table>
               </div>
            </div>                              

            <div id="info_tab_members_current">
                <div class="ui-tabs-panel">
                    <table class="display tblClass" cellpadding="0" cellspacing="0">        ...
                     </table>
                 </div>
            </div>      
        </div>
    </div>

如何获取div内id为info_tab_members_all的table? 需要考虑的是,有几个 table 具有共同的 class display tblClass

我试过:

首先我尝试做

foreach (HtmlNode row in doc.DocumentNode.SelectNodes("table[@class='display tblClass']/tbody/tr"))
{
...
}     

但问题是我从所有具有 display tblClass 的 table 获取数据 于是我尝试了:

 var tbl = doc.DocumentNode.
                SelectSingleNode("//*[@id='info_tab_members_all']").
                SelectNodes("table[@class='display tblClass']/tbody/tr").
                ToList();

但我得到错误:

“Object reference not set to an instance of an object”

如何使用 div id: 'info_tab_members_all' 指定我想要的 table?

如果您能够使用 HtmlAgilityPack.CssSelectors,那您就走运了,

var table = htmlDoc.QuerySelectorAll("#info_tab_members_all table");
// table is `IList<HtmlNode>`

如果没有,那么您只需要正确的 XPath。这是 great reference for converting CSS to XPath,反之亦然。

var table = htmlDoc.DocumentNode.SelectSingleNode("//*[@id='info_tab_members_all']/*/table")
// table is `HtmlNode`