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;

今私の質問は、それが何人の子供であるかをどのように確認できるかです。

上記では、div に 3 つのスパンの子があり、上から下にその番号 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 に答える