2016-08-21 72 views
0

給出下面的HTML節點:如何可以選擇不包含鏈接,但其中的確包含特定文本使用XPath

$content = 
'<html> 
<body> 
    <div> 
    <p>During the interim there shall be nourishment supplied</p> 
    </div> 
    <div> 
    <p>During the <a href="#">interim</a> there shall be interim nourishment supplied</p> 
    </div> 
    <div> 
    <ul><li>During the interim there shall be nourishment supplied</li></ul> 
    </div> 
</body> 
</html>'; 

我想包含單詞「臨時」但如果這個詞的所有節點「臨時」是鏈接元素的一部分。

我期待的節點只是第一個P節點和LI節點。

我已經試過如下:

'//*/text()[not(a) and contains(.,"interim")]' 

...但是這仍返回A和也返回它的一部分的父P個節點(在A之後的部分),這兩個國家都需要的。你可以看到我嘗試在這裏:https://glot.io/snippets/ehp7hmmglm

+0

如果在HTML中出現'

臨時文件link

',您希望選擇「p」元素嗎? – kjhughes

回答

1

如果使用XPath表達式//*[not(self::a) and not(a) and text()[contains(.,"interim")]]那麼你得到的是不包含a元素的所有元素,都沒有a元素,並含有包含文字文本節點孩子。

相關問題