PHP DOM:获取没有后代节点的 Nodevalue

Posted

技术标签:

【中文标题】PHP DOM:获取没有后代节点的 Nodevalue【英文标题】:PHP DOM: Get Nodevalue without descendant nodes 【发布时间】:2011-05-09 23:31:57 【问题描述】:

我正在使用 php dom 函数nodeValue 来提取内容的文本。但它也返回后代值:

<example>
<inhalt>123<more>45</more></inhalt>
</example>

根据我的喜好返回inhalt 12345 和 123。我知道在inhalt 中包含文本不是很有意义,也不是很好,但是我如何检查inhalt 中没有文本,例如hasNodeValue

【问题讨论】:

如果有第三个数字45,你的要求是什么67? 记住文本也是一个节点。 【参考方案1】:

正如 Phil 提到的,文本也是按节点组织的。因此,您的节点 inhalt 有两个子节点:一个文本节点(“123”)和一个名为 more 的元素节点,它还有一个文本节点(“45”)。

如果只是想知道元素之前是否有文本more,测试是否至少有一个元素,然后测试第一个元素是否为文本(应该是DOMText 据我所知)。

如果您想知道,如果“根”处至少有一个元素,请遍历所有子元素并进行相同的测试。

http://www.php.net/manual/en/class.domtext.php

【讨论】:

以上是关于PHP DOM:获取没有后代节点的 Nodevalue的主要内容,如果未能解决你的问题,请参考以下文章

js DOM知识总结

JavaScript DOM查询

DOM

PHP DOM textContent vs nodeValue?

跨浏览器检测某个节点是不是另一个节点的后代

移除元素