2012-08-09 65 views
2
元素

我想通過含div的每個子元素進行迭代:迭代通過與DOM文檔和DOMXPath

$html = ' <div id="roothtml"> 
<h1> 
Introduction</h1> 
<p>text</p> 
<h2> 
text</h2> 
<p> 
test</p> 
</div>'; 

而且我有這個PHP:

$dom = new DOMDocument(); 
$dom->loadHTML($html); 

$dom->preserveWhitespace = false; 

$xpath = new DOMXPath($dom); 
$els = $xpath->query("/div"); 
print_r($els); 

我得到的不過是DOMNodeList Object ()我看到the IBM tutorial我應該得到一個數組。我做錯了什麼?

任何幫助表示讚賞。

回答

4

您正在使用錯誤的查詢字符串,您應該使用//div

遍歷列表like this

$els = $xpath->query("//div"); 
foreach($els as $el) { 
    echo $el->textContent; 
} 
+0

那是偉大的..謝謝!當它允許我時,我會接受你的答案。 – beingalex 2012-08-09 14:59:58

+0

@beingalex - 不客氣 - 請注意,您看到的'var_dump()'可能令人困惑 - 請參閱[本演示](http://viper-7.com/lZoBP4)。即使列表中有元素,var_dump()也是空的,所以不要依賴它! – nickb 2012-08-09 15:01:20