[Résolu] [PHP] SimpleXML, comment ça marche ?

Salut les geeks.

Après avoir lu le dernier article de Digital Web Magazine, je me suis dit que bosser avec XML en PHP c’était vachement plus simple que je ne le pensais.
J’ai donc essayé de mettre en pratique ce qui est expliqué dans l’article pour arriver à afficher sous forme de liste les titres ainsi que les liens vers les billets d’un blog depuis un flux RSS venant de WordPress

Pour voir à quoi ressemble un flux RSS venant d’un blog sous WordPress. Je vous propose de jeter un coup d’oeil, totalement au hasard, sur celui de Scoble : http://scobleizer.com/feed/ (sous firefox, clic droit, afficher la source)

Et voici mon code:

[code]<?php
// ?feed=rss2 car je n’utilise par la ré-écriture d’url de WordPress pour mes tests
$rssblog = “http://monadresse/blog/?feed=rss2”;

// Chargement du fichier XML
$xml = @simplexml_load_file($rssblog) or die (“no file loaded”);

foreach ($xml->item as $item) {
echo ‘

  • ’.$xml->title.’
  • ’;
    }
    ?>[/code]

    Et bien-sûr cela ne marche pas. Sinon je ne serais pas en train d’écrire tout ça… B)
    J’ai essayé différentes approches sans succès. Je ne rentre pas dans la boucle foreach… Ce qui gêne peut-être c’est le fait qu’il y a des et des ailleurs que dans les . Et puis $xml->link semble perturber PHP, il y voit la fonction link.

    J’attends donc vos explications pour me débloquer. Merci B)

    c’est le @ qui te fout la merde.
    C’est un caractere special qui dit “si jamais y a une erreur pas grave, fait rien et passe a la suite. Si c’est grave arrete tout. Mais tu le dis pas a l’utilisateur, c’est secret”

    Donc pour debugger un soft, c’est clairement pas ideal…

    LoneWolf
    @ is evil.

    Arf, je ne savais pas pour la @. J’avais bêtement recopié cette ligne de l’exemple dans l’article. Merci pour l’info. Cependant, aucun changement.

    So, help yourself since I don’t have any more clue.

    LoneWolf
    Un peu d’anglais pour le fun meme si ca doit pas etre bien ecrit B)

    [quote=“Bebop, post:1, topic: 32886”]<?php foreach ($xml->item as $item) { echo '<li><a href="'.$xml->link.'">'.$xml->title.'</a></li>'; } ?>

    Et bien-sûr cela ne marche pas. Sinon je ne serais pas en train d’écrire tout ça… B)
    J’ai essayé différentes approches sans succès. Je ne rentre pas dans la boucle foreach… Ce qui gêne peut-être c’est le fait qu’il y a des et des ailleurs que dans les . Et puis $xml->link semble perturber PHP, il y voit la fonction link.[/quote]
    Je ne suis pas allé voir comment c’est SimpleXML mais il y a un truc qui me fait tiquer dans ta boucle là : tu fais un foreach pour récupérer chaque élément dans la variable $item et tu n’utilises pas cette variable dans ton echo ?

    Edit : En plus même en utilisant $item dans ton echo ça ne marchera pas non plus. Allez deux tips : analyse bien la structure du flux rss que tu donnes en lien (je suppose que c’est celui que tu veux afficher) et relis l’article de Digital dont le code est pourtant explicite.

    Ok, merci de m’avoir indiqué mes erreurs. B)

    C’était un peu n’importe quoi ce que j’avais fait. Cela m’apprendra à lire l’article vite fait le soir à moitié en mode zombie. Et de vouloir coder le truc quelques jours plus tard à toute vitesse sans prendre la peine de relire attentivement l’article.

    Je laisse le code corrigé pour ceux qui se retrouveront peut-être un jour bloqué bêtement comme moi.

    [code]<?php
    $rssblog = “http://monadresse/blog/?feed=rss2”;

    // Chargement du fichier XML
    $xml = simplexml_load_file($rssblog);

    foreach ($xml->channel->item as $item) {
    echo ‘

  • ’.$item->title.’
  • ’;
    }
    ?>[/code]

    Bon en gros, simplexml, une fois que tu as appris à contourner tous les problèmes inhérents à la fonction et ce qui lui manque, tu as fini par recoder toi-même un max de trucs. Pour avoir jouer avec beaucoup dans le cadre d’un mémoire sur php5, je te conseillerais plutôt: http://simplepie.org/

    Merci pour le lien. Je ne pense pas en avoir l’utilité là, mais je vais le garder bien au chaud. B)