Элемент доступа Zend_Feed - ATOM
Я пытаюсь прочитать "itunes RSS Feed". Насколько я знаю, это основано на ATOM.
Работает отлично:
$feed = $this->getFeed(self::TOP300_PAYED);
foreach ($feed as $item) {
echo $item->name;
}
Но мне нужен следующий узел:
<im:image height="53">
http://a3.mzstatic.com/us/r1000/116/Purple/61/9b/f2/mzl.wyuzxxzw.53x53-50.png
</im:image>
Любая идея, как получить доступ к этому с Zend Feed??
2 ответа
Решение
Как и любой другой канал ATOM, вы можете перебирать его так:
$feed = new Zend_Feed_Atom("example.com");
foreach ($feed as $entry) {
$xml = $entry->saveXml();
$xmlObj = simplexml_load_string($xml);
$xmlObj->registerXPathNamespace('im', "example.com");
$result = $xmlObj->xpath('//im:image');
foreach ($result as $image) {
echo $image . "\n";
}
}
Обратите внимание на использование registerXPathNamespace()
здесь кажется, что iTunes использует пространство имен в своем фиде, поэтому вам нужно сначала его зарегистрировать.
Попробуйте это и дайте мне знать, если это работает.
Спасибо за подсказку "Пространство имен":
Окончательное решение:
$item->registerXPathNamespace('im', 'image');
$image = (string) $item->image[0]; // first image "52"