IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[SimpleXML] Parser en commencant par la fin


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2006
    Messages : 33
    Points : 20
    Points
    20
    Par défaut [SimpleXML] Parser en commencant par la fin
    Bonsoir à tous

    j'utilise Simplexml pour parser un fichier xml
    mais voilà au moment de parcourir les items de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach($xml->channel->item as $item) {
    ...
    }
    j'aurais besoin de commencer par la fin du fichier ...
    vous auriez une idée ?

  2. #2
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Jette un oeil là dessus : http://php.net/array_reverse

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2006
    Messages : 33
    Points : 20
    Points
    20
    Par défaut
    Merci de ta réponse
    mais le problème est que le fichier est manipulé comme un objet de type SimpleXMLElement, et non pas comme un tableau

  4. #4
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Tu as essayé ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $items = array_reverse($xml->channel->item->children());
    foreach ($items as $item) {
    }

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2006
    Messages : 33
    Points : 20
    Points
    20
    Par défaut
    Je viens d'essayer, j'obtiens l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    The argument should be an array
    à la ligne où j'écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $inv = array_reverse( $xml->channel->item->children() );
    children() ne renverrait donc pas un tableau ..

  6. #6
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    quel est la structure de ton xml ?

  7. #7
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2006
    Messages : 33
    Points : 20
    Points
    20
    Par défaut
    Il s'agit d'un flux rss, pour la version :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?xml version="1.0" encoding="iso-8859-1"?>

  8. #8
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Le problem venait de spl qui fait que channel->item est soit l'ensemble des éléments item de channel (donc un tableau) soit le premier élément item de channel (donc un objet).
    Il faut donc ruser et passer par xpath :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    <?php
    $string = <<<XML
    <?xml version='1.0'?>
    <rss>
       <channel>
            <item>
                    <title>1</title>
            </item>
            <item>
                    <title>2</title>
            </item>
      </channel>
    </rss>
    XML;
    $xml = simplexml_load_string($string);
     
    echo "Dans l'ordre : ";
    foreach($xml->xpath('/rss/channel/item') as $item) {
       echo $item->title;
       echo ', ';
    }
    echo "\n";
     
    echo "Dans l'ordre inverse : ";
    foreach(array_reverse($xml->xpath('/rss/channel/item')) as  $item) {
       echo $item->title;
       echo ', ';
    }
    echo "\n";
    ?>
    Ce qui donne :
    Dans l'ordre : 1, 2,
    Dans l'ordre inverse : 2, 1,

  9. #9
    Membre à l'essai
    Inscrit en
    Avril 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2006
    Messages : 33
    Points : 20
    Points
    20
    Par défaut
    Merci beaucoup de ton aide, là je ne tiens plus debout
    je testerais demain, bonne nuit !

Discussions similaires

  1. Réponses: 3
    Dernier message: 13/02/2014, 08h25
  2. lecture d un fichier en commencant par la fin
    Par m.nico dans le forum Delphi
    Réponses: 6
    Dernier message: 26/05/2006, 15h31
  3. [Flash] commencer par la fin...
    Par knuts dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 12/08/2005, 16h15
  4. identifiant commencant par 1
    Par claudyyyyy dans le forum Langage SQL
    Réponses: 6
    Dernier message: 28/04/2004, 14h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo