敏捷包获得最后 <p> 个 DOM 个
AgilityPack getting last <p> of DOM three
像这样承认 HTML :
<p>hello<p>
<p>
<table>
<tbody>
<tr>
<td>
<p>is it me you're looking for</p>
</td>
</tr>
<tr>
<td>
<p>can you have me too?</p>
</td>
</tr>
</tbody>
</table>
</p>
我想要的是获取我的 P 元素的 innerText,但我在 table 部分遇到了麻烦。当我使用循环遍历所有 P 时,我得到 4 innerText :
- 你好
- 你要找的是我吗 可以找我吗?
- 你找的是我吗
- 你也可以要我吗?
在这种情况下,我不想在 table 周围获取 P,因为我已经通过在 TD 内循环他的后代 children 来获取它们。
如果有其他 P 作为他的 children,我如何才能 select 带有敏捷包的 P 元素只获得 P 元素? (所以循环的结果只会是 1,3,4) ?
我实际上使用 :
获取 P 元素
HtmlDocument html = new HtmlDocument();
var pTag = html.DocumentNode.SelectNodes(".//p");
XPath .//p[not(descendant::p)]
将从您的示例中得到 1、3 和 4。
它找到所有 p
元素,然后跳过具有 p
后代的元素。
像这样承认 HTML :
<p>hello<p>
<p>
<table>
<tbody>
<tr>
<td>
<p>is it me you're looking for</p>
</td>
</tr>
<tr>
<td>
<p>can you have me too?</p>
</td>
</tr>
</tbody>
</table>
</p>
我想要的是获取我的 P 元素的 innerText,但我在 table 部分遇到了麻烦。当我使用循环遍历所有 P 时,我得到 4 innerText :
- 你好
- 你要找的是我吗 可以找我吗?
- 你找的是我吗
- 你也可以要我吗?
在这种情况下,我不想在 table 周围获取 P,因为我已经通过在 TD 内循环他的后代 children 来获取它们。 如果有其他 P 作为他的 children,我如何才能 select 带有敏捷包的 P 元素只获得 P 元素? (所以循环的结果只会是 1,3,4) ?
我实际上使用 :
获取 P 元素HtmlDocument html = new HtmlDocument();
var pTag = html.DocumentNode.SelectNodes(".//p");
XPath .//p[not(descendant::p)]
将从您的示例中得到 1、3 和 4。
它找到所有 p
元素,然后跳过具有 p
后代的元素。