Я работаю с библиотекой 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"}