我正在使用HtmlAgilityPack lib,并从我有限的xpath知识中了解一些问题。如下面的代码示例所示,从即时窗口,table是从DocumentNode中选择的htmlnode。因此,如果选择“/ div”,则选择“div”,选择“div”,“// div”选择文档中的所有div(因此它不会仅找到它的后代。因此我选择了table.Descendants相反,它给了我想要的5个div。
我想知道,使用xpath和selectNodes方法更快,然后只使用linq(table.Descendants.Select(n => n.attribute [“class”] ==“someclass”))等。
什么是我对xpath不了解,为什么我不能选择特定的元素后代?
table.SelectNodes("/div");
null
table.SelectNodes("div")
{HtmlAgilityPack.HtmlNodeCollection}
_items: Count = 1
_parentnode: null
Count: 1
IsReadOnly: false
table.SelectNodes("//div")
{HtmlAgilityPack.HtmlNodeCollection}
_items: Count = 84
_parentnode: null
Count: 84
IsReadOnly: false
table.Descendants("div").ToArray()
{HtmlAgilityPack.HtmlNode[5]}
[0]: Name: "div"}
[1]: Name: "div"}
[2]: Name: "div"}
[3]: Name: "div"}
[4]: Name: "div"}