XML с xpath и PHP: как получить доступ к текстовому значению атрибута записи

XML:

<entry> <link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://picasaweb.google.com/data/feed/api/user/xy/albumid/531885671007533108" /> <link rel="alternate" type="text/html" href="http://picasaweb.google.com/xy/Cooking" /> <link rel="self" type="application/atom+xml" href="http://picasaweb.google.com/data/entry/api/user/xy/albumid/531885671007533108" /> </entry> 

Вот что я пробовал:

 foreach($xml->entry as $feed) { $album_url = $feed->xpath("./link[@rel='alternate']/@href"); echo $album_url; } 

Я тоже пробовал всевозможные перестановки, но не повезло.

Ожидаемым результатом будет http://picasaweb.google.com/xy/Cooking

В результате я получаю "". Может кто-нибудь объяснить, что я делаю неправильно?

Может кто-нибудь, пожалуйста, помогите мне? Я был в этом часами …

Related of "XML с xpath и PHP: как получить доступ к текстовому значению атрибута записи"

xpath() возвращает массив, вы должны выбрать первый элемент этого массива в индексе 0. Внимание: если нет совпадения, он может возвращать пустой массив. Поэтому вам следует добавить предложение if (isset($xpath[0])) всякий случай.

 foreach ($xml->entry as $entry) { $xpath = $entry->xpath('./link[@rel="alternate"]/@href'); if (isset($xpath[0])) { echo $xpath[0], "\n"; } } 

Вы были близки:

 ./link[@rel='alternate']/@href 

Должен быть правильный XPath для получения этих значений.