何时在 HtmlAgilityPack SelectNodes 中使用双斜杠

When to use double slash in HtmlAgilityPack SelectNodes

我想循环遍历 table 和 select 中所有 <p> 行中的所有行。

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

为什么我必须使用 SelectNodes("//p") 而不仅仅是 SelectNodes("p")?如果我做后者,我总是得到 null.

我想知道为什么我不在 foreach 语句中使用 //tr

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

如果你写 /p 它只会在你的 tr 元素的 HTML 树的根节点中搜索

示例:

使用 //p 你会找到 2 个 <p> 元素,只有 /p 你不会找到它,null 将是 return.

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

在这种情况下,如果您通过 /p 搜索,将会找到该元素。

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