敏捷包获得最后 <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 :

  1. 你好
  2. 你要找的是我吗 可以找我吗?
  3. 你找的是我吗
  4. 你也可以要我吗?

在这种情况下,我不想在 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 后代的元素。