XML с xpath и PHP: как получить доступ к текстовому значению атрибута записи - PullRequest
1 голос
/ 16 декабря 2009

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

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

Может кто-нибудь помочь мне? Я занимаюсь этим часами ...

Ответы [ 2 ]

4 голосов
/ 16 декабря 2009

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";
    }
}
1 голос
/ 16 декабря 2009

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

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

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

...