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 :

[XML] Parser un fichier xml


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 12
    Points : 8
    Points
    8
    Par défaut [XML] Parser un fichier xml
    bonjour j'ai une petite question s'il vous plait j'ai un fichier xml et je veux recuperer la date de chaque pays voila le fichier xml
    Code xml : 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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    Article xml:lang="FR" handle="Meteo" type="Local">
    <Location id="07157000" continent="EU" name_fr="Paris" altitude="108" latitude="49.02" longitude="2.53" type="Town">
    <Day val="20130712">
    <TempMor>11</TempMor>
    <TempAft>26</TempAft>
    <Txt_fr>bien ensoleillé</Txt_fr>
    <Symb>90</Symb>
    <Force>8</Force>
    <Dir>N</Dir>
    <Source>modell</Source>
    </Day>
    <Day val="20130713">
    <TempMor>15</TempMor>
    <TempAft>27</TempAft>
    <Txt_fr>bien ensoleillé</Txt_fr>
    <Symb>90</Symb>
    <Force>8</Force>
    <Dir>NE</Dir>
    <Source>modell</Source>
    </Day>
    <Day val="20130714">
    <TempMor>16</TempMor>
    <TempAft>28</TempAft>
    <Txt_fr>bien ensoleillé</Txt_fr>
    <Symb>90</Symb>
    <Force>6</Force>
    <Dir>N</Dir>
    <Source>modell</Source>
    </Day>
    </Location>
    <Location id="06590000" continent="EU" name_fr="Luxembourg" altitude="376" latitude="49.62" longitude="6.22" type="Town">
    <Day val="20130712">
    <TempMor>12</TempMor>
    <TempAft>23</TempAft>
    <Txt_fr>bien ensoleillé</Txt_fr>
    <Symb>90</Symb>
    <Force>4</Force>
    <Dir>W</Dir>
    <Source>modell</Source>
    </Day>
    <Day val="20130713">
    <TempMor>12</TempMor>
    <TempAft>23</TempAft>
    <Txt_fr>bien ensoleillé</Txt_fr>
    <Symb>90</Symb>
    <Force>6</Force>
    <Dir>N</Dir>
    <Source>modell</Source>
    </Day>
    <Day val="20130714">
    <TempMor>12</TempMor>
    <TempAft>24</TempAft>
    <Txt_fr>bien ensoleillé</Txt_fr>
    <Symb>90</Symb>
    <Force>4</Force>
    <Dir>NW</Dir>
    <Source>modell</Source>
    </Day>
    </Location>
    ......
    pour l instant j arrive a parser le fichier xml ça ma fiche:
    Day:
    TempMor:11
    TempAft:26
    Force:8
    Dir:N
    .....
    mais le probleme day ne s affiche pas et voila le code que j'ai mis
    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
    <?php
    //Function to convert date format
    function ConvertDate($date)
    {
    $timezone = new DateTimeZone('UTC');
    $dateTime = DateTime::createFromFormat('Ymd', $date, $timezone);
    echo $dateTime->format('m/d');
    }
     
    $xml = simplexml_load_file('meteo.xml'); 
    $items = $xml->xpath('*/Day');
    $query =$xml->xpath('Location/Day'); // had les expression 
    foreach($query as $q) {
    echo '<br>';
    echo $q->Day['val'];
    }
    foreach($items as $item) {
    echo '<br>Day :'.$item->Day['val'].'<br>TempMor :',$item->TempMor.'<br>TempAft :',$item->TempAft.'<br>Force :',$item->Force.'<br>Dir :',$item->Dir.'<br>----<br>' ;
    }
    ?>

    aidez moi s'il vous plait

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    comme ça ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Merci d'avoir me répondre mais j'ai pas compris qu'est ce que tu veux dire par Merci de m'expliquer

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu as mis $item->Day['val']Alors que $item fait référence aux sous-éléments de <day>.
    L'élément père <day> est $items.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    ok mais comment je peux faire pour afficher Day s'il vous plait

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ca ne fonctionne pas comme je t'ai indiqué ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    regarde j'ai modifier le code
    Code : 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
    <?php
     
    //Function to convert date format
    function ConvertDate($date)
    {
    $timezone = new DateTimeZone('UTC');
    $dateTime = DateTime::createFromFormat('Ymd', $date, $timezone);
    echo $dateTime->format('m/d');
    }
    $xml = simplexml_load_file('meteo.xml'); 
    $items = $xml->xpath('*/Day');
    $result =$xml->xpath('//Location[@name_fr="Paris"]'); 
    /*foreach($result as $q) {
    echo ConvertDate($q->Day['val']);
    echo '<br>';
    echo $q->Day['val'];
    }
    */
    foreach($items as $item) {
    echo '<br>Day :'.$item->Day['val'].'<br>TempMor :',$item->TempMor.'<br>TempAft :',$item->TempAft.'<br>Force :',$item->Force.'<br>Dir :',$item->Dir.'<br>----<br>' ;
     
    }
    ?>
    ce code la m'affiche ça
    Day :
    TempMor :11
    TempAft :26
    Force :8
    Dir :N
    ----

    Day :
    TempMor :15
    TempAft :27
    Force :8
    Dir :NE
    ----

    Day :
    TempMor :16
    TempAft :28
    Force :6
    Dir :N
    ----
    donc ce qui manque toujours c'est DAY je c pas d'ou viens le problème.

  8. #8
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    voilà ce qu'il te faut pour afficher les dates par pays:

    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
     
    <?php
    $xml = simplexml_load_file('meteo.xml'); 
     
    //parcours des fils de Location
    foreach($xml->Location as $key=>$item) {
     
    echo '<h3>'.$item['name_fr'] ,' ,Le  ',$item->Day['val'] ,':</h3>';
     
    //Parcours des fils de Date
    foreach($item as $value){
     echo "Tempor :", $value->TempMor, '<br>',
    	"TempAft :", $value->TempAft, '<br>',
    	"Force :", $value->Force, '<br>',
    	"Dir :", $value->Dir, '<br>';
     
    echo "<br>--<br>";
    }
     
    }
    ?>

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    merci armel mais ce code la ma afficher la même date pour tout les pays et dans le fichier chaque jour a une date .
    voila le resultat:

    Paris ,Le 20130712:
    Day :
    Tempor :11
    TempAft :26
    Force :8
    Dir :N

    --
    Day :
    Tempor :15
    TempAft :27
    Force :8
    Dir :NE

    --
    Day :
    Tempor :16
    TempAft :28
    Force :6
    Dir :N

    --
    Luxembourg ,Le 20130712:
    Day :
    Tempor :12
    TempAft :23
    Force :4
    Dir :W

    --
    Day :
    Tempor :12
    TempAft :23
    Force :6
    Dir :N

    --
    Day :
    Tempor :12
    TempAft :24
    Force :4
    Dir :NW

    --
    Dublin ,Le 20130712:
    Day :
    Tempor :12
    TempAft :25
    Force :4
    Dir :SE

    --
    Day :
    Tempor :16
    TempAft :22
    Force :4
    Dir :NE

    --
    Day :
    Tempor :14
    TempAft :23
    Force :2
    Dir :SE

    --
    Amsterdam ,Le 20130712:
    Day :
    Tempor :14
    TempAft :20
    Force :6
    Dir :N

    --
    Day :
    Tempor :14
    TempAft :22
    Force :6
    Dir :N

    --
    Day :
    Tempor :15
    TempAft :21
    Force :6
    Dir :N

    --
    Bruxelles ,Le 20130712:
    Day :
    Tempor :9
    TempAft :22
    Force :6
    Dir :N

    --
    Day :
    Tempor :12
    TempAft :23
    Force :6
    Dir :N

    --
    Day :
    Tempor :13
    TempAft :24
    Force :4
    Dir :N

    --
    Genève ,Le 20130712:
    Day :
    Tempor :16
    TempAft :27
    Force :2
    Dir :E

    --
    Day :
    Tempor :16
    TempAft :27
    Force :2
    Dir :NE

    --
    Day :
    Tempor :15
    TempAft :27
    Force :4
    Dir :NE

    --
    Munich ,Le 20130712:
    Day :
    Tempor :8
    TempAft :25
    Force :4
    Dir :NE

    --
    Day :
    Tempor :12
    TempAft :24
    Force :2
    Dir :NW

    --
    Day :
    Tempor :11
    TempAft :25
    Force :2
    Dir :NW

    --
    New York JFK ,Le 20130712:
    Day :
    Tempor :22
    TempAft :26
    Force :12
    Dir :NE

    --
    Day :
    Tempor :22
    TempAft :27
    Force :10
    Dir :E

    --
    Day :
    Tempor :24
    TempAft :29
    Force :6
    Dir :SW

    --
    Toronto Intl. ,Le 20130712:
    Day :
    Tempor :19
    TempAft :24
    Force :6
    Dir :E

    --
    Day :
    Tempor :18
    TempAft :25
    Force :6
    Dir :E

    --
    Day :
    Tempor :21
    TempAft :27
    Force :4
    Dir :N

    --
    Hong Kong ,Le 20130712:
    Day :
    Tempor :27
    TempAft :33
    Force :6
    Dir :SW

    --
    Day :
    Tempor :29
    TempAft :34
    Force :12
    Dir :SW

    --
    Day :
    Tempor :29
    TempAft :31
    Force :12
    Dir :S

    --

    si tu regarde il a pris que la première date

  10. #10
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    effectivement j'ai pas pris en compte le fait fait qu'au sein de l’élément Location qu'on a plusieurs éléments.Dans ce cas Day doit être un tableau et pour accéder à ses attributs il suffit de donner l'indice et l'indice est obtenu en comptant le nombre de Day dans la 1ère boucle:

    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
     
    <?php
    $xml = simplexml_load_file('meteo.xml'); 
     
    $i=0;//compteur du nombre de Day
    //parcours des fils de Location
    foreach($xml->Location as $key=>$item) {
     
    echo '<h3>'.$item['name_fr'] ,' ,Le  ',$item->Day[$i]['val'],':</h3>';
    $i++;
    //Parcours des fils de Date
    foreach($item as $k=>$value){
     echo "Tempor :", $value->TempMor, '<br>',
    	"TempAft :", $value->TempAft, '<br>',
    	"Force :", $value->Force, '<br>',
    	"Dir :", $value->Dir, '<br>',
    	"Date:", $value['val'], '<br>'; //on obtenir day de cette manière aussi
     
    echo "<br>--<br>";
     
    }
     
    }
    ?>

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Merci beaucoup .
    Résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [xslt] Parser 2 fichiers XML
    Par malekms dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 30/12/2005, 12h22
  2. [XML][Java] parser plusieurs fichiers en un seul arbre DOM ?
    Par mrlenul dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 29/11/2005, 11h09
  3. Parser un fichier XML
    Par Charlinecha dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 11/07/2005, 17h18
  4. [SAX] parser un fichier xml en Java
    Par royou dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 10/02/2005, 17h12
  5. parser des fichier .xml en perl
    Par djibril dans le forum Modules
    Réponses: 13
    Dernier message: 18/05/2004, 17h08

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