选择nodeValue但排除子元素

Jür*_*aul 6 php xml xpath dom domdocument

假设我有这段代码:

<p dataname="description">
Hello this is a description. <a href="#">Click here for more.</a>
</p>
Run Code Online (Sandbox Code Playgroud)

如何选择p但是排除的nodeValue及其a内容?

我目前的代码:

$result = $xpath->query("//p[@dataname='description'][not(self::a)]");
Run Code Online (Sandbox Code Playgroud)

我选择它 $result->item(0)->nodeValue;

Kri*_*fer 10

只需将/ text()附加到您的查询即可

$result = $xpath->query("//p[@dataname='description'][not(self::a)]/text()");
Run Code Online (Sandbox Code Playgroud)

  • 如果没有/ text(),则选择整个节点,包括它的子节点.元素节点本身没有文本,而是将文本存储在名为text node的子节点中.nodeValue用于获取节点的文本值.在具有子节点的节点上调用nodeValue获取所有子文本节点并将它们连接起来.使用/ text(),您只能获取text类型的第一个子节点,因此只获取此文本节点的文本 (2认同)