HtmlAgilityPack 在指定 table 后读取 table

HtmlAgilityPack reading table after specified table

我有类似的结构:

<table class="superclass">                    
   <tr>                                                                  
       <td>    
       </td>                                                            
       <td>                                                     
       </td>                                                             
    </tr>                                                                
   <tr>                                                                  
       <td>                                                        
       </td>                                                             
       <td>                                              
       </td>                                                            
    </tr>                                                                
</table>                                                                

<table cellspacing="0">                                                  
    <tr>                                                                 
       <td>                                      
       </td>                                                            
       <td>
       </td>                                                            
    </tr>                                                    
    <tr>                                                                 
       <td>                                                       
       </td>                                                            
        <td>                                                       
       </td>                                                            
    </tr>                                                                
</table>                   

这就是我用 class 获得第一个 table 的方式:

HtmlNode firstTable = document.DocumentNode.SelectSingleNode("//table[@class=\"superclass\"]");

然后我看了资料。但是我不知道如何直接访问另一个 table 并读取该数据。有任何想法吗?

我宁愿避免计算它是哪个 table 然后使用索引到那个 table。

如果要访问多个节点,可以考虑使用 SelectNodes(xpath) 方法而不是 SelectSingleNode(xpath) 方法。

我将在此处提供示例代码以供参考,它可能无法满足您的需要。

        var tables = htmlDocument.DocumentNode.SelectNodes("//table");
        foreach (HtmlNode table in tables)
        {
            if (table.GetAttributeValue("class", "").Contains("superclass"))
            {
                //this is the table of class="superclass"
            }
            else
            {
                //this is the other table.
            }
        }

有 XPath following-sibling 轴,它允许您在同一级别获取当前上下文元素之后的元素:

HtmlNode firstTable = document.DocumentNode.SelectSingleNode("//table[@class=\"superclass\"]");
HtmlNode nextTable = firstTable.SelectSingleNode("following-sibling::table");