何时在HtmlAgilityPack SelectNodes中使用双斜杠

时间:2016-11-05 20:07:25

标签: c# html-agility-pack

我想循环遍历表格中的所有行并连续选择所有

foreach (var r in Table.SelectNodes("tr"))
{
    var Paragraphs = r.SelectNodes("//p");

}

为什么我必须使用SelectNodes(“// p”)而不仅仅是SelectNodes(“p”)?如果我这样做,我总是得到null。

我想知道为什么我在foreach声明中没有“// tr”。

1 个答案:

答案 0 :(得分:2)

如此编写//p,在这种情况下,它会在"p"元素的HTML树中的任意深度找到tr个节点。

如果您编写/p,它将仅搜索HTML元素的tr树的根节点

示例:

使用//p,您会找到2个<p>元素,只有/p您将找不到它,并且将返回null。

<tr>
    <div>
       <p></p>
    </div>
    <div>
       <div>
           <p></p>
       </div>
    <div>

</tr>

在这种情况下,如果按/ p搜索,则会找到该元素。

<tr>
   <p></p>
</tr>