我还有其他一些与此主题相关的问题:
getting a parent node and its child, where the child has a certain text
和 XPath finding certain node with certain text
让我们说这是我的HTML:
<body>
<div>
<span>something else</span>
<span>something</span>
<span>something else</span>
<div>
</body>
我正在使用以下内容查询具有特定文本的节点:
$node_with_value = $xpath->query('(//*[text()= "'something"])');
这将返回包含所有节点的列表。 在这种情况下,它只有1。
找到它的父母:
parent = $node_with_value->item(0)->parentNode;
现在我的问题是如何检查它的孩子数量。
在上面我们有3个跨度的孩子到div,从上到下依次计算它的数字2.有没有办法计算这个programmaticaly?
答案 0 :(得分:1)
使用XPath,您可以$count = $xpath->evaluate("count(. | preceding-sibling::*)", $node-with-value->item(0))
根据兄弟元素或$count = $xpath->evaluate("count(. | preceding-sibling::node())", $node-with-value->item(0))
查找数字,以根据兄弟节点(即元素节点,但文本,注释和处理指令节点)查找数字孔)。
答案 1 :(得分:0)
再次使用纯XPath解决方案:
count(/*/*/span[.='something']/preceding-sibling::*) +1