Basit XML ayrıştırma hatası

1 Cevap xml

Konteyner etiketi <users> nerede olduğunu, bir Twitter XML dosyası boyunca yineleme yapmak için çalışıyorum ve her kullanıcı <user>. Ben her kullanıcı için $id XML özniteliği dayalı bir değişkeni <id> oluşturmanız gerekir.

Adı zaten örneği.

$url = "http://api.twitter.com/1/statuses/friends/$username.xml";
$xmlpure = file_get_contents($url);
$listxml = simplexml_load_string($xmlpure);

foreach($listxml->users->children() as $child)
  {
 $id  = $child->{"id"};
//Do another action
}

Ama bu hatayı alıyorum:

Uyarı: main () [function.main]:. Hattında 32 Düğüm artık / home var / .. / bonus.php

Line 32 foreach ifadedir ve ben aslında main() yöntemini kullanmayın.

1 Cevap

Bu temsil düğüm $child not, bir <id/> çocuk var olduğunu olabilir. Sen isset () kullanarak bu kontrol hatta echo $child->asXML(); ile düğümün XML çıktılamak seçebilirsiniz

Eğer niyet, bir dize olarak $id kullanmak eğer Ayrıca, sen gibi döküm gerekir.

$id = (string) $child->id;

Başka bir şey, böyle belgeyi yüklemek olabilir:

$listxml = simplexml_load_file($url);

Burada bir soru sorarken Son olarak, her zaman özgün XML belgesinin ilgili bir örnek link lütfen.


Update

Şüpheli olarak, sadece doğru düğümleri erişim yok. Bir inexistent düğümü adını (sizin örnekte "kullanıcılar") belirtirseniz SimpleXML yerine bir hata üreten bir geçici hayalet düğümün bir tür oluşturur. Bu daha kolay sanırım yeni düğümler yaratmak sağlamaktır.

Her neyse, burada komut gibi görünmelidir ne:

$users = simplexml_load_file($url);

foreach ($users->user as $user)
{
    $id = (string) $user->id;
}

Her zaman PHP ağacında her zaman nerede olduğunu bilmek, böylece onlar temsil düğüme göre vars isim; size gelecekte benzer sorunları bir çok kazandıracak. Kök düğümü <users/>, bu nedenle, değişken $users ve için aynı olduğunu <user/> / $user.