まともにマニュアルを読まないので、知識が穴だらけの私です。xpathで特定の要素を取得したあと、foreachでループして、さらにそのnodeに対してqueryを投げる方法が検索してもなかなか見つからなかったのですが、見つかったので例のごとくメモしておきます。

xpathのqueryは特定位置からの相対パスでも指定できる

ちょっと適当に例を書いてみる

<ul id="ul_data"> 
        <li> 
                <h2>aaaa</h2> 
                <span>AAAAA</span> 
         </li> 
         <li> 
                 <h2>bbbb</h2> 
                 <span>BBBBB</span> 
         </li> 
         <li> 
                 <h2>cccc</h2> 
                 <span>CCCCC</span> 
         </li> 
</ul>

liタグだけを取得してループしてみる

foreach($xpath->query('//ul[@id="ul_data"]")]/li') as $node){ 
   
   ///$nodeから見て、h2を指定する 
   
   $tmp=$xpath->query("h2",$node); 
   
   echo $tmp->item(0)->textContent;
   
   //h2の中身が出る 
 } 

こんな感じで、ループ中のnodeから、中身のタグを指定して取り出すことができました。

ひとまずおわり

コメント