2013-03-05 57 views
0

我正在使用DOMDocument和DOMXpath來分析一個html頁面。PHP獲取嵌套值的DOMXpath

標記是這樣的:

<dl> 
    <dt> 
    <a href="">name</a> 
    </dt> 
    <dd> 
    <span class="one">one</span> 
    <span class="two">two</span> 
    </dd> 
</dl> 
<dl> 
    <dt> 
    <a href="">name</a> 
    </dt> 
    <dd> 
    <span class="one">one</span> 
    <span class="two">two</span> 
    </dd> 
</dl> 

最初,我只需要得到href值,並能使用:

$doc = new \DOMDocument(); 
    $doc->loadHTML($html); 
    $xpath = new \DOMXPath($doc); 
    $res = $xpath->query('//dl/dt/a'); 

然後在結果使用->nodeValue->getAttribute('href')

迭代

但是,現在我想要在span標記中獲得值爲'2'的值。

所以我更新了我的查詢到$xpath->query('//dl')

現在的問題是,我該如何去獲取href標籤和值以及帶有類名稱的跨度值。此外,關於如何調試或顯示查詢路徑的任何建議都會很有幫助。

謝謝!

回答

2

直接獲取這些值與路徑:

$res = $xpath->query('//a/@href'); 

和跨度標籤中的內容:

$res = $xpath->query("//span[@class='two']"); 

你可以測試XPath的位置:http://www.xpathtester.com

+0

非常感謝 - 這並它!並感謝參考 – dzm 2013-03-05 23:54:44

+0

@dave歡迎,很高興我可以幫助! – michi 2013-03-05 23:57:21