2014-09-21 46 views
0

這是我必須通過DOM(我已經刪除內容):捲曲:獲取類名的元素

<ul class="toggle-block"> 
     <li> 
      <h4 class="chip ui-header rounded-5 act-select toggle-active" ></h4> 
      <div class="inner rounded-5 act-block"> 
       <div class="inlineBlock"></div> 
       <div class="inlineBlock"></div> 
       <div></div> 
       <h5></h5> 
       <div class="inlineBlock"></div> 
       <div class="inlineBlock"></div> 
      </div> 
     </li> 
    </ul> 

我需要得到位於每個DIVH5每個內容act-block main div。

我已經開始使用此代碼:

$xpath = new DOMXPath($dom); 
$els = $xpath->query('//ul[@class="toggle-block"]/li/div'); 

但現在我不知道該怎麼辦。任何想法 ?

編輯1:

我做了一個測試與此,它的工作爲第一個節點...

$xpath = new DOMXPath($dom); 
$actblock = $xpath->query("//div[contains(concat(' ',normalize-space(@class),' '),' act-block ')]"); 
$els = $xpath->query('./div | ./h5', $actblock->item(0)); 
$el = $els->item(0)->nodeValue; 
echo $el; 

...但它不工作以下物質:

$xpath = new DOMXPath($dom); 
$actblock = $xpath->query("//div[contains(concat(' ',normalize-space(@class),' '),' act-block ')]"); 
$els = $xpath->query('./div | ./h5', $actblock->item(0)); 
$el = $els->item(1)->nodeValue; 
echo $el; 

回答

0

這個查詢應該工作:

$actblock = $xpath->query("//div[contains(concat(' ',normalize-space(@class),' '),' act-block ')]"); 
$els = $xpath->query('./div | ./h5', $actblock->item(0)); 

請參閱:http://pivotallabs.com/xpath-css-class-matching/,Xpath select multiple tags

+0

我試過你的解決方案。對於第一個節點是可以的,但不是以下的節點。我編輯了我的帖子。 – 2014-09-21 14:59:21

+0

@SergentPepper你是什麼意思「對於第一個節點它沒關係」?在我的例子中,我假設只有一個帶有「act-block」類的div,是不是正確的? – idmean 2014-09-21 15:00:26

+0

是的,只有一個動作塊。關於節點,我的意思是每個div/h5內的act-block:$ els-> item(0) - > nodeValue,$ els-> item(1) - > nodeValue,$ els-> item(2) - > nodeValue,等等。 – 2014-09-21 15:03:42