1

我还有其他几个与该主题相关的问题:

获取父节点及其子节点,其中子节点具有特定文本

XPath 查找具有特定文本的特定节点

假设这是我的 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。有没有办法以编程方式计算它?

4

2 回答 2

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))查找数量或根据兄弟节点(即元素节点,但也包括文本、注释和处理指令节点)来查找数量。

于 2012-12-23T18:31:46.160 回答
0

又是一个纯 XPath 解决方案

count(/*/*/span[.='something']/preceding-sibling::*) +1
于 2012-12-23T20:39:54.587 回答