2010-08-10 13 views
0

Je suis en train d'analyser ce flux: http://musicbrainz.org/ws/1/artist/c0b2500e-0cef-4130-869d-732b23ed9df5?type=xml&inc=url-relsPHP: Comment puis-je accéder à cette entité XML lorsque son nom contient un mot réservé?

Je veux saisir les URL à l'intérieur de la balise 'relation-list'.

J'ai essayé d'extraire l'URL avec PHP en utilisant simplexml_load_file(), mais je ne peux pas y accéder en utilisant $ feed-> artist-> relation-list car PHP interprète "list" comme la fonction list(). Je sens que je vais mal (pas beaucoup d'expérience XML), et même si j'ai pu obtenir les éléments que je veux, je ne sais pas comment extraire leurs attributs (juste veulent les champs type et target).

Quelqu'un peut-il me pousser doucement dans la bonne direction?

Merci. Matt

Répondre

4

Jetez un oeil à la examples sur la page php.net, ils vous disent vraiment comment résoudre ce:

// $feed->artist->relation-list 
$feed->artist->{'relation-list'} 

Pour obtenir un attribut d'un nœud, il suffit d'utiliser le nom d'attribut sous forme de tableau index sur le nœud:

foreach($feed->artist->{'relation-list'}->relation as $relation) { 
    $target = (string)$relation['target']; 
    $type = (string)$relation['type']; 
    // Do something with it 
} 

(non testé)

+0

Merci, il me semble avoir manqué cette syntaxe. Tu es un héros! –

+0

Parfois, la syntaxe SimpleXML "sent" très bizarre, cela m'a beaucoup dérouté. N'oubliez jamais de faire le moulage de type, ou votre script va exploser avec des erreurs étranges. (: – svens