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");
我有类似的结构:
<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");