Разбор XML с помощью SimpleXML в PHP - PullRequest
1 голос
/ 22 декабря 2009

У меня есть xml-структура следующей формы, которая должна быть проанализирована с использованием PHP simplexml.

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

Предположим, я хочу напечатать название первой книги. Я могу сделать это, используя

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

Но, когда я пытаюсь напечатать все URL-адреса изображений для этой книги, это не работает. Код, который я использую:

$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;
}

Есть ли способ решить эту проблему?

Спасибо

Ответы [ 2 ]

2 голосов
/ 22 декабря 2009

Это работает для меня:

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

См. SimpleXML Базовое использование .

1 голос
/ 22 декабря 2009

URL является атрибутом, а не дочерним элементом. Попробуйте это:

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

Документация здесь

...