在PHP DOM中选择所选节点的下一个节点?
发布时间:2020-12-13 13:10:22 所属栏目:PHP教程 来源:网络整理
导读:到目前为止,我正在处理这样的 HTML文件 div name="node"/divdiv/divdiv name="node"/divdiv/divdiv name="node"/divdiv/div 我想选择每个“div”的下一个节点,其名称等于“node”,我尝试: $dom = new DOMdocument();@$dom-loadHTML($html);$xpath = new 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; 但我只是得到一个错误
谁能告诉我我的剧本有什么问题?
错误很明显:没有方法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); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |