0

Symfony Crawler コンポーネントを使用して、次のように html を解析しています。

<div>              //first level div
    <div>1</div>   //sub div
    <div>2</div>
    <div>
      <div></div>  // more levels and empty divs possible
    </div>
</div>
<div>
    <div>3</div>
    <div>4</div>
</div>

値 1 2 3 4 は異なる場合があるか、空の div に存在しないことさえありますが、div には subDivs などが含まれる場合もあります。それらを処理するために最初のレベルの div を選択する段階で立ち往生しています。Xpath リクエストは、最初のレベルの div とサブディビジョンも返します

$crawler = new Crawler($html);
foreach ($crawler->filterXPath('//div') as $domElement) {
    var_dump($domElement->textContent);
 }

戻り値

 string(2) "12"
 string(1) "1"
 string(1) "2"
 string(2) "34"
 string(1) "3"
 string(1) "4"

subElements の処理を​​防ぐために、Xpath リクエストはどのように見えるべきですか?

UPD:
実際のトラブル DOM スキーム

<div>              //first level div
    <div>1</div>   //sub div
    <div>2</div>
</div>
<div>
    <div>3</div>
    <div>4
        <div>5</div>
        <a>6</a>
    </div>
 </div>

この DOM ツリーは第 1 レベルの div によって処理され、<a>タグの存在に応じていくつかのロジックが作成されます。

4

2 に答える 2