HtmlAgilityPack:Descendants vs Xpath

时间:2011-08-03 00:32:57

标签: html-agility-pack

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

0 个答案:

没有答案