如何使用 htmlagilitypack 获取除最后一个 p 标签的所有文本

how to get all text of an p tag except last with htmlagilitypack

我有一个 html 就像 div 中的一个 p 标签(编号 10)和 class "fine"

 <p>
    first para.
    <br/>
    second para.
<br/>
    <br/>
    nine para .
    ...
    <br/>
    last para.

    </p>

我想获取除最后一段之外的所有文本: 第一段 第二段 九段 ...

HtmlNode item = document.DocumentNode.SelectSingleNode("//div[@class='fine']/p[10]//text()");

这段代码刚得到: 第一段

顾名思义,SelectSingleNode()只是return单节点。如果 XPath 参数匹配多个节点,它 return 只有第一个。

您应该改用 SelectNodes(),并添加谓词 [position() < last()] 以排除最后一个文本节点:

string query = "//div[@class='fine']/p[10]//text()[position() < last()]";
HtmlNode items = document.DocumentNode.SelectSingleNode(query);