我正在使用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"}