PHP DomDoc 和 XPath 获取未知子元素的数量


PHP DomDoc & XPath get number of unknown child elements

>我用DomDoc检索网站的内容,并使用XPath查询某些元素。例如,我查询<p>元素 - 通过在循环$paragraphs = $dom->query('//p')->item(i);中执行类似操作,然后继续在循环内操作<p>。现在,有没有办法找出<p>内可能有什么样的其他HTML元素,以及段落元素中有多少其他元素?

我看过这个例子:PHP文档

但这似乎只有在您对子元素有所了解时才有效? 如果我不知道<p></p>的"内容",如何获取计数和元素名称。

谢谢!

好吧,在你拥有的任何 DOM 元素上,您可以使用getElementsByTagName('*')来查找所有后代元素,或者您可以使用相对于元素的 XPath 来查找具有路径*的所有子元素或使用 XPath 表达式count(*)对它们进行计数,或者您可以分别使用 .//* 对所有后代元素执行相同的操作count(.//*)

因此,给定$element = $dom->query('//p')->item(i);您可以使用$element->getElementsByTagName('*')->length作为 DOM 方法来查找所有后代,或者$dom->query('.//*', $element)作为 XPath 方式。对于子元素,请使用 $dom->query('*', $element)