AgilityPack获得DOM的最后<p>三

时间:2016-02-29 10:27:24

标签: c# html-agility-pack

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

  1. 你好
  2. 是你在找我能找到你吗?
  3. 是你,我是
  4. 你能拥有我吗?
  5. 在这种情况下,我不想让P围绕桌子,因为我已经通过在TD内部循环他的后代孩子来获得它们。 如果有其他P作为他的孩子,我如何选择具有Agility pack的P元素才能获得P元素? (所以循环上的结果只有1,3,4)?

    我实际上使用:

    获取P元素
    HtmlDocument html = new HtmlDocument();
    var pTag = html.DocumentNode.SelectNodes(".//p");
    

1 个答案:

答案 0 :(得分:1)

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