xpath找出其他兄弟姐妹中的子号码

时间:2012-12-23 17:59:08

标签: php html xpath

我还有其他一些与此主题相关的问题:

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?

2 个答案:

答案 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