C# HTMLAgilityPack-查找最里面的表
我不确定如何添加动态Xpath,使我们能够在HTML中查找最里面的表(作为IEnumerable/列表),而不管它们处于什么级别 基本上如果我有:C# HTMLAgilityPack-查找最里面的表,c#,html,html-agility-pack,C#,Html,Html Agility Pack,我不确定如何添加动态Xpath,使我们能够在HTML中查找最里面的表(作为IEnumerable/列表),而不管它们处于什么级别 基本上如果我有: <table> <tr> <td> <table> <tr> <td> <table><tr&g
<table>
<tr>
<td>
<table>
<tr>
<td>
<table><tr><td>thisguy</td></tr></table>
</td>
</tr>
<td>
<table><tr><td>thisguy</td></tr></table>
</td>
</tr>
</table>
</td>
</tr>
</table>
这个家伙
这个家伙
我正试图返回包含这个家伙的td表。当然,这只是一个例子。真正的表不包含这个
我尝试了一个递归函数,但结果是:
private static IEnumerable<HtmlNode> GetBottomMostTable(HtmlNode nodeToCheck)
{
var isTableExist = nodeToCheck
.Descendants("table")
.Any();
if (isTableExist)
{
var bottomMost = GetBottomMostTable(nodeToCheck.ChildNodes.Descendants("table").First());
}else
{
return nodeToCheck
}
}
私有静态IEnumerable GetBottomMostTable(HtmlNode nodeToCheck)
{
var isTableExist=nodeToCheck
.后代(“表”)
.Any();
如果(isTableExist)
{
var bottomMost=getbottomosttable(nodeToCheck.ChildNodes.subjections(“表”).First());
}否则
{
返回节点检查
}
}
尝试以下代码:
var innerTables = doc.DocumentNode.SelectNodes("//table[not(descendant::table)]");
此处使用的XPath将获取所有没有表作为子代的表节点。可能的重复项