gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 12:41:31 24 4
gpt4 key购买 nike

到目前为止,我正在处理这样的 HTML 文件

<div name="node"></div>
<div></div>
<div name="node"></div>
<div></div>
<div name="node"></div>
<div></div>

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

$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 - 在PHP DOM中选择所选节点的下一个节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9549300/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com