我有类似的结构:
<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得到第一个表的方法:
HtmlNode firstTable = document.DocumentNode.SelectSingleNode("//table[@class=\"superclass\"]");
然后我读了数据。但是,我不知道如何直接进入另一个表并读取该数据。有任何想法吗?
我宁愿避免计算它是哪个表,然后使用该表的索引。
答案 0 :(得分:1)
如果要访问多个节点,可以考虑SelectSingleNode(xpath)方法的SelectNodes(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.
}
}
答案 1 :(得分:1)
XPath following-sibling
轴允许您在同一级别获取当前上下文元素之后的元素:
HtmlNode firstTable = document.DocumentNode.SelectSingleNode("//table[@class=\"superclass\"]");
HtmlNode nextTable = firstTable.SelectSingleNode("following-sibling::table");