Hola, ik ben Nigel en net nieuw hier dus nog niet zo bekend met deze community. Ben sinds kort begonnen met PHP en XML en had een vraag.

Bij voorbaat excuses als ik niet goed heb gezocht maar ik zit even te kijken wat de mogelijkheden zijn met de last.fm API e.d. En hierbij wordt de data die je opvraagt (in mijn geval) ontvangen in .xml formaat.

Sinds de 2.0 versie van dit systeem wordt het volgende:
<image>
<large>http://userserve-ak.last.fm/serve/174s/9597461.jpg</large>
<medium>http://userserve-ak.last.fm/serve/64s/9597461.jpg</medium>
<small>http://userserve-ak.last.fm/serve/34s/9597461.jpg</small>
</image>

niet meer op die manier uitgelezen maar op de volgende:
<image size="small">http://userserve-ak.last.fm/serve/34s/9202641.jpg</image>
<image size="medium">http://userserve-ak.last.fm/serve/64s/9202641.jpg</image>
<image size="large">http://userserve-ak.last.fm/serve/126/9202641.jpg</image>

Op dit moment lees ik het bij de oude manier nog zo uit:
$album_image = $album->image->medium;

Maar aangezien er geen aparte cel (cel?) meer is voor die object weet ik niet hoe ik dit uit lees.

Vooralsnog ik ben hier pas net mee begonnen dus erg onbekend. Als mensen tutorials hebben oid mbt dit onderwerp is dat ook welkom.

Alvast bedankt,

Nigel
Hoe lees je het in? Met [php]dom[/php] of met [php]simplexml[/php]?
Het wordt ingelezen met simplexml:

$user = "pindamon"; //Your Last.FM username
$url = "http://ws.audioscrobbler.com/1.0/user/$user/topalbums.xml";

$xml = simplexml_load_file("$url");
Als ik kijk naar de xml is die nogsteeds zo:

<image>
        <large>http://userserve-ak.last.fm/serve/174s/8683561.jpg</large>
        <medium>http://userserve-ak.last.fm/serve/64s/8683561.jpg</medium>
        <small>http://userserve-ak.last.fm/serve/34s/8683561.jpg</small>
    </image>

Want je hebt de url verkeerd, vergeet niet dat de eerste node topalbums is. Ik kijk nu naar 2.0.
Hmm... Jammer genoeg werkt deze xpath niet in php. Wel in m'n xml editor...
/topalbums/album/image[@size='medium']

Ik pruts nog even verder.
gebruik xpath

image[@size='__size__']
Karl schreef op 23.05.2009 21:36
Hmm... Jammer genoeg werkt deze xpath niet in php. Wel in m'n xml editor...
/topalbums/album/image[@size='medium']

Ik pruts nog even verder.


als topalbums de root is lijkt je xpath iig goed en zou moetenw erken
Mathijs schreef op 23.05.2009 21:39
[quote='Karl schreef op 23.05.2009 21:36']Hmm... Jammer genoeg werkt deze xpath niet in php. Wel in m'n xml editor...
/topalbums/album/image[@size='medium']

Ik pruts nog even verder.


als topalbums de root is lijkt je xpath iig goed en zou moetenw erken[/quote]
Ja, hij werkt ook, want mijn editor geeft aan dat het goed is, dat zeg ik toch ook... Even lezen dus (en niet bumpen).
Dit werkt wel, misschien niet de mooiste oplossing maarja:
<?php
$user = "pindamon"; //Your Last.FM username
$url = "http://ws.audioscrobbler.com/1.0/user/" . $user . "/topalbums.xml"; // Variabele buiten quotes!
$xml = simplexml_load_file($url); // Variabelen buiten quotes!!
$afbeeldingen = $xml->xpath("/topalbums/album/image");
// Hieronder is voorbeeld, vind ik leuk om zelf effe inelkaar te flansen
foreach($afbeeldingen as $afbeelding) 
{
echo '<img src="' . $afbeelding->medium . '"  alt="Last.fm album image, medium" />' . PHP_EOL;
}
?>

Er staat me ook wel zoiets bij, dat de xpath die de xml lib van php niet zo krachtig is.
Ik vind het toch wel raar, op geen enkele manier wilt ie dat doen...
Bedankt voor de reacties, ik refresh all the time en probeer het ook maar het wil echt niet lukken nog. Ik zie ook dat je daar (post boven) nog 1.0 hebt staan.

Maar ondanks dat krijg ik het niet op de volgende manieren voor elkaar.

Het was zo:
$album_image = $album->image->medium;

En als ik dat dus op de volgende manieren probeer dan werkt het niet.

$album_image = $album->image[@size='medium']

of

$afbeeldingen = $xml->xpath("/topalbums/album/image");
$album_image = $afbeeldingen->medium;
Hmm. Dat was dus de fout, dat ik 1.0 pakte ipv 2.0. Zo doet ie het:
<?php
$user = "pindamon"; //Your Last.FM username
$url = "http://ws.audioscrobbler.com/2.0/user/" . $user . "/topalbums.xml"; // Variabele buiten quotes!
$xml = simplexml_load_file($url);
$afbeeldingen = $xml->xpath('/topalbums/album/image[@size="medium"]');
// Hieronder is voorbeeld, vind ik leuk om zelf effe inelkaar te flansen
foreach($afbeeldingen as $afbeelding) 
{
echo '<img src="' . $afbeelding . '"  alt="Last.fm album image, medium" />' . PHP_EOL;
}
?>


Edit: lala, ik ben lekker sneller.

Reageren