2013-10-06 3 views
0

Я новичок в Xpath. Я протестировал запрос с моим плагином XPath Firefox, который возвращает прекрасный результат. Однако, когда я запускал запрос в PHP и делал var_dump(), я не получал никаких результатов. Просто вывод аналогичен:Запрос DOMXPath возвращает нулевые результаты

class DOMNodeList#4 (0) { 
} 

PHP принимает мое выражение как действительное. До сих пор я удалил tbody, который является частью моего запроса, созданного браузером. Кроме того, я даже пытался запросить («*») без каких-либо результатов. Что еще я могу попробовать? Мой запрос ниже

$page = curl_exec($ch); 

# Close the PHP/CURL session 
curl_close($ch); 

// Create new PHP DOM document 
$dom = new DOMDocument; 
// Load html from curl request into document model 
@$dom->loadHTML($page); 
$xpath = new DOMXPath($dom); 

//$tableRows = $xpath->query("//id('divResults')/x:table/x:tbody/x:tr"); 
//$tableRows = $xpath->query("id('divResults')/table/tbody/tr"); 
//$tableRows = $xpath->query('/*'); 
$tableRows = $xpath->query('*'); 

var_dump($tableRows); 
+1

Если вы используете пространства имен, вам необходимо зарегистрировать их раньше. Только так, если ваш исходный документ содержит пространства имен. Результат '$ xpath-> query' возвращает элемент, реализующий интерфейс итератора, но не содержит самих данных, поэтому вы не можете использовать' ver_dump' на нем. –

ответ

0

По какой-то причине var_dump() не работает. Вот какой код выполняет эту работу.

$dom = new DOMDocument; 
if (!$dom->loadHTML($page)) throw new Exception (implode (",", libxml_get_errors())); 
$xpath = new DOMXPath($dom); 
$entries = $xpath->query($xpathExpr); 
if (!$entries) throw new Exception ("XPath evaluation error"); 
foreach ($entries as $entry) 
    echo "name: {$entry->nodeName}<br/>path: ".$entry->getNodePath()."<br/>value: {$entry->nodeValue}"; 
Смежные вопросы