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 un XML avec SimpleXML_Load_File


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 89
    Points : 37
    Points
    37
    Par défaut [SimpleXML] Parser un XML avec SimpleXML_Load_File
    Bonsoir,
    je suis en train de créer la nouvelle version du site d'une radio nationale et j'aurai besoin d'avoir votre avis sur les méthodes de parse xml sachant que je reçois un flux XML pour chaque fournisseur de contenu partenaire de la radio.
    Je cherche donc une méthode de parse qui fonctionne avec la plupart des flux xml; pouvez-vous m'aider ?

    Enfin, je me suis penché sur le simplexml_load_file mais je n'arrive pas à lire ce flux :

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?xml version="1.0" encoding="UTF-8"?>
    <reponse guichet="" pointvente="">
    <salle codsal="">
    <nom_salle></nom_salle><ville></ville><pays>FR</pays><manif codman=""><nom_manif></nom_manif><genre></genre><sous-famille /><url></url><image></image><date_debut>20/11/2007</date_debut><date_fin>20/11/2007</date_fin><prix_min>1370</prix_min><prix_max>1370</prix_max><dispo>1</dispo><commentaire-long></commentaire-long><commentaire-court></commentaire-court></manif></salle><salle codsal=""><nom_salle></nom_salle><ville></ville><pays>FR</pays><manif codman=""><nom_manif></nom_manif><genre></genre><sous-famille /><url></url><image></image><date_debut>07/12/2007</date_debut><date_fin>07/12/2007</date_fin><prix_min>1170</prix_min><prix_max>1170</prix_max><dispo>1</dispo><commentaire-long></commentaire-long><commentaire-court></commentaire-court></manif><manif codman=""><nom_manif>

    Comment faire pour lister chaque salle ?
    J'ai essayé simplement ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $xml = simplexml_load_file("../rsc/xml/catalogfull.xml");
    print_r($xml->salle);
    Mais ca ne fonctionne pas !

    J'obtiens ce truc :
    SimpleXMLElement Object ( [@attributes] => Array ( [codsal] => LIFO3 ) [nom_salle] => [ville] => [pays] => FR [manif] => SimpleXMLElement Object ( [@attributes] => Array ( [codman] => ) [nom_manif] => [genre] => Concerts [sous-famille] => SimpleXMLElement Object ( ) [url] => [image] => [date_debut] => 20/11/2007 [date_fin] => 20/11/2007 [prix_min] => [prix_max] => [dispo] => 1 [commentaire-long] => SimpleXMLElement Object ( ) [commentaire-court] => SimpleXMLElement Object ( ) ) )

    Aidez-moi s'il vous plait.

    Merci !

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Citation Envoyé par mbsofts
    Je cherche donc une méthode de parse qui fonctionne avec la plupart des flux xml; pouvez-vous m'aider ?
    C'est à dire ? Si vous n'avez pas de structure prédéfinie ça va être difficile de parser le document surtout avec SimpleXML.

    Citation Envoyé par mbsofts
    Comment faire pour lister chaque salle ?
    Tout est indiqué dans la documentation : c'est possible avec une boucle foreach, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $sxml = simplexml_load_file("../rsc/xml/catalogfull.xml");
     
    foreach ($sxml->salle as $s) {
        echo $s->pays;
        echo $s->date_debut;
    }

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 89
    Points : 37
    Points
    37
    Par défaut
    c'est bien cela la problématique, en effet il n'y aura pas de structure prédéfinie. Mais penses tu que je puisse en personnalisant le script pour chaque flux réussir ce que je veux avec simple xml ??

    merci pour ton explication, j'avais bien compris cela mais cela semble ne pas fonctionner ? enfin, ya til une limite de taille d'un fichier xml pour SimpleXML ? Sachant que je ne ferai bien entendu pas cela à l'éxecution, tout le traitement ne sera effectué qu'une fois par jour pour alimenter une base de données.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 89
    Points : 37
    Points
    37
    Par défaut
    dans le code que j'ai fournis au-dessus, je n'arrive pas à accéder à la balise "commentaire-long" ou "commentaire-court" ! Comment faire ? Comment voir ce qu'il y a dans le SimleXMLElement ?

    Merci de votre aide à tous

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Citation Envoyé par mbsofts
    c'est bien cela la problématique, en effet il n'y aura pas de structure prédéfinie. Mais penses tu que je puisse en personnalisant le script pour chaque flux réussir ce que je veux avec simple xml ??
    Ce serait une solution à moins d'être en mesure d'identifier le flux ou plus simplement son origine via un paramètre par un exemple (en fonction de comment vous le récupérez).

    Citation Envoyé par mbsofts
    j'avais bien compris cela mais cela semble ne pas fonctionner ?
    Par rapport à votre structure XML et le dump de $xml->salle, cela me semble pourtant correct

    Citation Envoyé par mbsofts
    enfin, ya til une limite de taille d'un fichier xml pour SimpleXML ?
    Un traitement DOM demande plus de ressources : toutes les données sont rassemblées en mémoire sous la forme d'un arbre avant que vous nous puissez entreprendre la moindre opération. Donc la première limite est certainement la mémoire, par la directive memory_limit, et le temps d'exécution (max_execution_time). Toutefois, pour ce qui est tâche programmée, qui demande souvent plus de ressources, on passe généralement par l'interpréteur de commande (CLI) qui n'est normalement pas autant entravé par ces limites (cela dit il est préférable d'avoir de telles limites pour une exécution passant par le serveur web). Il y a éventuellement des alternatives plus performantes dont l'extension XMLReader.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 89
    Points : 37
    Points
    37
    Par défaut
    merci pour toutes ces précisions !
    je vais tenir compte de ces remarques;
    par contre n'aurai-tu pas une solution pour que je puisse accéder à commentaire-long et commentaire-court ?? Cela renvoi apparemment des SimpleXMLElements, mais d'après ce que j'ai compris ce sont des objets, comment voir ce qu'ils contiennent ?

    Merci

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Citation Envoyé par mbsofts
    n'aurai-tu pas une solution pour que je puisse accéder à commentaire-long et commentaire-court ?? Cela renvoi apparemment des SimpleXMLElements, mais d'après ce que j'ai compris ce sont des objets, comment voir ce qu'ils contiennent ?
    Par une cast (même implicite, ce que réalise en interne un certain nombre de fonctions) ? Il est, en effet, parfois nécessaire d'y recourir explicitement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $comlong = (string) $sxml->salle[0]->{'commentaire-long'};

Discussions similaires

  1. parser du xml avec java
    Par 080983 dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 30/07/2007, 10h56
  2. [SimpleXML] Parser du XML dans mon php
    Par onet dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 14/02/2007, 11h09
  3. [DOM] Erreur parser fichier xml avec caractère spéciaux
    Par turcotm dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 19/06/2006, 10h01
  4. [SimpleXML] Parser un XML et en récupérer des valeurs
    Par mickael.be dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 15/04/2006, 16h08
  5. [DOM XML] Comment parser du XML avec une version 4.3 ?
    Par ouioui2000 dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 18/10/2005, 16h52

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