什么时候在HtmlAgilityPack中使用双斜杠

本文关键字:HtmlAgilityPack 什么时候 | 更新日期: 2023-09-27 18:16:33

我想循环遍历表中的所有行,并选择一行中的所有<p>

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

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

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

什么时候在HtmlAgilityPack中使用双斜杠

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

如果你写/p,它将只搜索tr元素的HTML树的根节点

例子:

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

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

在这种情况下,如果你按/p搜索,元素将被找到。

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