我想在XPath中打印評估表達式的結果時出現錯誤。PHP - DOMXpath - 獲取結果
$ url = $ xpath-> evaluate('// a/@ href',$ event); echo $ url;
我有這樣的錯誤:開捕致命錯誤:類的DOMNodeList的對象無法轉換爲字符串
我的代碼:
<?php
// Get the HTML Source Code
$url='http://www.parisbouge.com/events/2012/05/01/';
$source = file_get_contents($url);
// DOM document Creation
$doc = new DOMDocument;
$doc->loadHTML($source);
// DOM XPath Creation
$xpath = new DOMXPath($doc);
// Get all events
$events = $xpath->query('//li[@class="nom"]');
// Count number of events
printf('There is %d events<br />', $events->length);
// List all events
for($i = 0; $i < ($events->length); $i++) {
$event = $events->item($i);
$url = $xpath->evaluate('//a/@href', $event);
$nom = $xpath->evaluate('//a/text()', $event);
$lieu = $xpath->evaluate('../li[@class="lieu"]/a/text()', $event);
echo "Result : $url $nom $lieu <br/>";
}
?>
我不能在路徑的正確性說話評估函數調用,但我的經驗與文檔中隱含的內容相反,如果表達式僅導致一個節點,則評估不會返回標量值。但如果表達式導致單個節點,並且您在路徑中使用明確的類型轉換,評估將返回標量。因此,如果它讀取爲$ url = $ xpath-> evaluate('string(// a/@ href)',$ event),那麼您的第一次評估調用將工作(假設路徑僅導致一個節點)。 –