作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
到目前为止,我正在处理这样的 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/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!