【发布时间】:2012-05-10 21:27:37
【问题描述】:
当我想使用 XPath 打印评估表达式的结果时出现错误。
$url = $xpath->evaluate('//a/@href', $event); 回声 $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);
标签: php xpath domdocument domxpath evaluate