HtmlAgilityPack:后代与 Xpath

发布于 2024-11-27 11:49:40 字数 884 浏览 1 评论 0原文

我正在使用 HtmlAgilityPack 库,并且根据我有限的 xpath 知识,有一些理解问题。正如下面的代码示例所示,在立即窗口中,table是从DocumentNode中选择的一个htmlnode。因此,使用“/div”时,没有选择任何一个,“div”选择了一个div子项,“//div”选择了文档中的所有div(因此它不仅仅找到了它的后代。因此,我选择了table.Descendants相反

,我想知道的是,使用 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"}

Im working with the HtmlAgilityPack lib and having a few questions of understanding from my limited xpath knowledge. As the code sample below show, from immediate window, table is a htmlnode selected from DocumentNode. So with "/div" none is selected, "div" the one div child is selected, "//div" have selected all the divs in the document(so it did not find only its descendants. Therefor i have picked table.Descendants instead which give me the 5 divs i want.

I would like to know, is using xpath with the selectNodes method faster then just using linq (table.Descendants.Select(n=>n.attribute["class"] == "someclass")) ect.

And what is it i dont understand about xpath, why cant i select a specific elements descendants?

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"}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文