何时在 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>
我想循环遍历 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>