XPath ve PHP ile XML: Bir girişin bir niteliğin metin değerini erişmek nasıl

2 Cevap 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>

İşte ben denedim ne:

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

Ben de, permütasyon her türlü denedim ama hayır şans ettik.

Beklenen sonuç http://picasaweb.google.com/xy/Cooking olurdu

Ben olsun sonucudur "" dir. Birisi ben yanlış yapıyorum açıklayabilir misiniz?

Biri bana yardım edebilir mi? Saatlerce bu oldum ...

2 Cevap

xpath() bir dizi döndürür, sen indeksi 0, o dizinin ilk öğe seçmek zorundasınız Dikkat:. Eşleşme varsa, boş bir dizi döndürebilir. Bu nedenle, bir if (isset($xpath[0])) tümcesi, sadece durumda eklemek gerekir.

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

    if (isset($xpath[0]))
    {
        echo $xpath[0], "\n";
    }
}

Sen yakın:

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

Bu değerleri almak için doğru XPath olmalıdır.