提取文本并忽略下一个节点

时间:2017-01-05 02:02:45

标签: xpath html-agility-pack

由此:

<span class="postbody">
    <span style="color: #8e2fb6">
        <span style="font-weight: bold">nickname</span>
    </span>     
    <br>
    Example text 
    <br>
    Example text
    <br>    
    <p class="signature">THIS IS WHAT I DO NOT WANT</p>
</span>

我想提取:

<br>
Example text 
<br>
Example text
<br>   

我试过了:span/text()[1]但似乎没有用。我总是得到不受欢迎的p课程。它甚至可以吗?

3 个答案:

答案 0 :(得分:1)

首先,您需要将Html字符串加载到HtmlDocument或HtmlNode(使用.load()函数)。

ChildNodes集合包含当前节点的每个子节点(基本上 span.postbody 下的每个节点)。

之后您需要做的事情非常明显,只需抓住 #text br 节点(请记住,您会收到一些 #text < / strong>只有空白字符的节点。您可能希望在结果中过滤掉它。

//load html to HtmlNode
node.ChildNodes.Where(n => n.Name.Equals("#text") || n.Name.Equals("br")) //It will return collection of HtmlNode

答案 1 :(得分:0)

您可以将jQuery选择器用于postbody,然后使用.text方法,该方法应该忽略HTML。这也将忽略。

$( 'postbody。')文本();

另一种方法是遍历$('。postbody')的子项.text();

答案 2 :(得分:0)

'//text()[preceding-sibling::br and normalize-space()]'