Проблема с «неопределенным префиксом пространства имен» с XPath в PHP? - PullRequest
1 голос
/ 24 марта 2011

Очень плохо знаком с PHP / программированием в целом, и я пытался запустить файл PHP, настроенный для анализа фида Atom, выводимого из Google Search API for Shopping.Однако при запуске код выводит большое количество вводимых кодов здесь ошибок (предупреждений), связанных с XPath:

Warning: SimpleXMLElement::xpath() [simplexmlelement.xpath]: Undefined namespace prefix in /home/ultradea/public_html/gtest/search.php on line 205

Warning: SimpleXMLElement::xpath() [simplexmlelement.xpath]: xmlXPathEval: evaluation failed in /home/ultradea/public_html/gtest/search.php on line 205

Warning: Invalid argument supplied for foreach() in /home6/legionit/public_html/pricemash/search.php on line 289

Полный код, с которым я работаю, можно найти здесь: search.php

Вот загруженная копия, с которой я работаю, которая выводит ошибки - http://ultra -deals.com / gtest / search.php

И вот конкретный рассматриваемый код

Lines 204-207
$xml = simplexml_load_string($return);
$result = $xml->xpath('//openSearch:totalResults');
$START = array_shift($xml->xpath('openSearch:startIndex'));
$RESULTS = array_shift($xml->xpath('openSearch:totalResults'));
<...> Line 261
$spelling_suggestion = array_shift($xml->xpath('s:spelling/s:suggestion'));
<...> Lines 273-280
$promos = "";
foreach ($xml->xpath('s:promotions/*') as $item) {
   $promos .= "<td><a href='$item[link]'>$item[description]";
   if ($item[imageLink] != "") {
     $promos .= "<br/><img src='$item[imageLink]'>";
   }
   $promos .= "</td>";
}
<...> Lines 328-335
$NARROW = "";
foreach ($xml->xpath('s:facets/*') as $item) {
 $values = $item->xpath('s:bucket');
 $type = $item['type'];
 $attrib_name = $item['name'];
 if ($attrib_name == "") {
   $attrib_name = $item['property'];  // Default types
 }

Каждое из них соответствует одному или нескольким сообщениям об ошибках, выведенным в файле search.php, который я загрузил на свой сервер.У меня нет опыта работы с XPath, поэтому я даже не совсем уверен, что это за префикс пространства имен.Очень ценю помощь!

Ответы [ 2 ]

0 голосов
/ 09 января 2012

Вы должны рассмотреть возможность использования расширения XQuery PHP для решения вашей проблемы: http://www.zorba -xquery.com / site2 / html / php.html

0 голосов
/ 25 августа 2011

openSearch - это неопределенное пространство имен здесь.Вы должны будете определить это ранее, и все должно начать работать должным образом.

...