给出以下HTML:
$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>';
我想要包含单词“interim”的所有节点,但是如果单词“interim”是链接元素的一部分则不是。
我期望的节点只是第一个P节点和LI节点。
我尝试了以下内容:
'//*/text()[not(a) and contains(.,"interim")]'
...但是这仍然返回A并且还返回它的父P节点(A之后的部分)的一部分,这两者都不是所希望的。你可以在这里看到我的尝试:https://glot.io/snippets/ehp7hmmglm
答案 0 :(得分:1)
如果您使用XPath表达式//*[not(self::a) and not(a) and text()[contains(.,"interim")]]
,那么您将获得所有不包含a
元素的元素,不是a
元素,并且包含包含该单词的文本节点子元素。< / p>