HtmlAgilityPack: Потомки против Xpath - PullRequest
1 голос
/ 03 августа 2011

Я работаю с библиотекой HtmlAgilityPack и у меня есть несколько вопросов для понимания из моих ограниченных знаний xpath. Как показано в приведенном ниже примере кода, из непосредственного окна table - это htmlnode, выбранный из DocumentNode. Таким образом, с "/ div" не выбран ни один, "div" выбран один дочерний элемент div, "// div" выбрали все div в документе (поэтому он не нашел только своих потомков. Поэтому я выбрал table.Descendants вместо этого, которые дают мне 5 дел, которые я хочу.

Я хотел бы знать, что использование 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"}
...