PHP SimpleXML kullanarak ayrıştırma XML

2 Cevap php

i PHP SimpleXML kullanarak ayrıştırılması için aşağıdaki biçimde bir xml yapısı var.

<books>

<book>
<title>XYZ</title>
<author> someone </author>
<images>
<image type="poster" url="<url>" size="cover" id="12345"/>
<image type="poster" url="<url>" size="thumb" id="12345"/>
</images>
</book>

<book>
<title>PQR</title>
<author> someoneelse </author>
<images>
<image type="poster" url="<url>" size="cover" id="67890"/>
<image type="poster" url="<url>" size="thumb" id="67890"/>
</images>
</book>

</books>

I ilk kitabının başlığını yazdırmak istediğinizi varsayalım. Ben kullanarak bunu yapmak mümkün duyuyorum

$books = $xml->books; 
$book = $books->book[0]; //Get the first book
print $book->title; //This works

Ben bu kitap için tüm görüntü adresler yazdırmaya çalıştığınızda Ama çalışmıyor. Kullanarak kod im:

$books = $xml->books; 
$book = $books->book[0]; //Get the first book
$images=$book->images;

foreach($images as $image) //This does not work
{
   print $image->url;
}

Bu sorunu düzeltmek için herhangi bir şekilde?

Thank You

2 Cevap

Bu benim için çalışıyor:

foreach ($xml->book[0]->images->image as $image) {
  echo $image['url'] . "\n";
}

Bkz SimpleXML Basic usage.

Url bir özellik değil, bir alt öğesidir. Bu deneyin:

print $image->attributes()->url;

Documentation here