Элемент доступа 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"
Другие вопросы по тегам