AgilityPack 在 DOM 三中排名最后

本文关键字:最后 DOM AgilityPack | 更新日期: 2023-09-27 18:36:44

承认这样的 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 元素的内部文本,但我在表格部分遇到了麻烦。当我使用循环时,遍历所有 P,我得到了 4 个内部文本:

  1. 你好
  2. 是你要找的我,你也能拥有我吗?
  3. 是我吗,你是为了
  4. 你也可以拥有我吗?

在这种情况下,我不想让 P 在桌子周围,因为我已经通过在 TD 内循环他的后代孩子来获得它们。如何选择带有敏捷包的 P 元素,以便在有其他 P 作为他的孩子时仅获得 P 元素?(所以循环上的结果只会是 1,3,4)?

我实际上使用以下方法获取 P 元素:

HtmlDocument html = new HtmlDocument();
var pTag = html.DocumentNode.SelectNodes(".//p");

AgilityPack 在 DOM 三中排名最后 <p>

XPath .//p[not(descendant::p)]将从您的示例中获取 1、3 和 4。它查找所有p元素,然后跳过具有p后代的元素。