Webstatt.org - Community seit 2006 - 2012 (2024?)

php+xml

Avatar user-180
22.03.2009 13:02

dumme frage, ich habe aber nichts gefunden: ich lade eine xml-datei mit simplexml_load_file(). zb so:

$url = "http://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user=snorpey&api_key=b25b959554ed76058ac220b7b2e0a026&limit=1000";
$xml = simplexml_load_file($url);

foreach($xml->lfm->recenttracks->track as $track)
{
$artist = $track->artist;
}

damit kann ich immer auf die informationen zwischen den spitzen klammern zugreifen, also zb auf <artist>blink-182</artist>.
wie kann ich auf werte innerhalb der spiten klammern zugreifen, aso auf <artist url="http://www.blink182.com">...</artist> ?

may the force be with you. but mostly with me.
user-303
22.03.2009 13:11

Hallo,

ganz einfach:
$artist['url']

Avatar user-180
22.03.2009 13:34

okay, danke.

ich stehe grade voll auf der leitung: wie bekomme ich das medium-bild, wenn ich sowas habe?

<track>
<image size="small">http://userserve-ak.last.fm/serve/34s/23714755.jpg</image>
<image size="medium">http://userserve-ak.last.fm/serve/64s/23714755.jpg</image>
<image size="large">http://userserve-ak.last.fm/serve/126/23714755.jpg</image>
</track>

may the force be with you. but mostly with me.
user-303
22.03.2009 13:38

Je nach dem gibt es 2 Möglichkeiten:

Du könntest mit foreach alle 3 Einträge durchgehen und dir das Gewünschte heraus suchen.
Besser wäre es aber mittels xpath:

nicht getestet, aber theoretisch so:

$track->xpath('//image[@size="medium"]'zwinkern;

Avatar user-180
22.03.2009 14:00

hm wenn ich das in einer schleife durchlaufen lasse, dann macht es mir ein array mit allen image nodes im xml.
ich will aber nur die bilder im aktuellen node haben. wie baue ich den selbstbezug in den pfad ein?

foreach($xml->recenttracks->track as $track)
{
$image = $track->xpath('self/image[@size="medium"]'zwinkern;
}

funktioniert nicht.

may the force be with you. but mostly with me.
user-303
22.03.2009 14:08

Wenn man die Doku auf Wikipedia auf SimpleXml anwenden kann, könnte es so in dieser Art funktionieren:

$track->xpath('child::image[@size="medium"]'zwinkern;

Avatar user-180
22.03.2009 14:11

funktioniert. herzlichen dank.

may the force be with you. but mostly with me.