在PHP DOM中选择所选节点的下一个节点?

前端之家收集整理的这篇文章主要介绍了在PHP DOM中选择所选节点的下一个节点?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
到目前为止,我正在处理这样的 HTML文件
<div name="node"></div>
<div></div>
<div name="node"></div>
<div></div>
<div name="node"></div>
<div></div>

我想选择每个“div”的下一个节点,其名称等于“node”,我尝试:

$dom = new DOMdocument();
@$dom->loadHTML($html);
$xpath = new DOMXPath($dom);

$els = $xpath->query("//div[@name='node']");

$j = 0;

foreach($els as $el)
{
    if($el->next_sibling()) $j++;
}

echo $j;

但我只是得到一个错误

Fatal error: Call to undefined method DOMElement::next_sibling()

谁能告诉我我的剧本有什么问题?

错误很明显:没有方法DOMElement :: next_sibling().阅读 documentation for DOMElement及其父类 DOMNode.您正在考虑属性DOMNode :: nextSibling.

但是,nextSibling获取下一个节点,而不是下一个元素. (没有DOM方法属性可以获取下一个元素.你需要继续使用nextSibling并检查nodeType,直到你点击另一个元素.)你的问题是你想要下一个节点,但我想你可能真的想要下一个元素(空< div>).这实际上很容易用XPath做,所以为什么不这样做呢?

要立即得到它:

$els = $xpath->query("//div[@name='node']/following-sibling::*[1]");

当你已经有一个< div name =“node”>时获得它:

$nextelement = $xpath->query("following-sibling::*[1]",$currentdiv);

猜你在找的PHP相关文章