如何使用htmlagilitypack

时间:2016-10-11 04:59:52

标签: c# xpath html-agility-pack

我有一个像这样的html是div中的一个p标签(数字10),类“精细”

 <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()");

这段代码得到: 第一段。

1 个答案:

答案 0 :(得分:0)

顾名思义,SelectSingleNode()仅返回单个节点。如果多个节点与XPath参数匹配,则仅返回第一个节点。

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

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