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

Langage PHP Discussion :

Lecture d'un XML à partir d'une URL


Sujet :

Langage PHP

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2003
    Messages : 48
    Par défaut Lecture d'un XML à partir d'une URL
    Bonjour,

    Je voudrais savoir s'il est possible de lire le contenu d'un fichier xml à partir d'une Url qui n'est pas situé sur le même serveur.

    Merci.

  2. #2
    Membre éclairé
    Inscrit en
    Mai 2005
    Messages
    364
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 364
    Par défaut
    oui:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $contents = file_get_contents($chceminentier)

  3. #3
    Membre expérimenté

    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
    Par défaut
    Bien sûr, comme tout autre type de fichier. Liens vers la FAQ :


    J'attire votre attention sur ce point comme mentionné dans les questions/réponses cités ci-dessus sur le fait que :
    Il n'est possible de récupérer un fichier par son URI complète que si la directive allow_url_fopen est activée dans le php.ini.
    Si ce n'est pas votre cas, alors vous pouvez vous tourner vers d'autres alternatives comme CURL (un exemple figure dans la FAQ).


    Julp.

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2003
    Messages : 48
    Par défaut
    Pourrat-tu me donner le liens concernant la procédure avec curl car le allow_url_fopen est à off sur mon serveur.

    Merci.

  5. #5
    Membre expérimenté

    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
    Par défaut
    Comment récupérer le contenu d'un fichier avec cURL ? (phpinfo vous renseignera sur la disponibilité de cette bibliothèque).


    Julp.

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2003
    Messages : 48
    Par défaut
    Ok, merci pour ces renseignements. Je vais essayer de les appliquer à mon cas.

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2003
    Messages : 48
    Par défaut
    Problème :

    L'adresse est du type http://www.developpez.net/forums/sho...=1#post1617165
    et pointe sur un fichier XML.

    Je voudrais récuperer l'intégralité du code de la page mais on dirais que CURL ne me retourne que les valeurs comprise dans les balises XML.

    PS : Mon code est le m^me que celui dans l'exemple cité juste avant. merci.

  8. #8
    Membre expérimenté

    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
    Par défaut
    Citation Envoyé par staive
    Je voudrais récuperer l'intégralité du code de la page mais on dirais que CURL ne me retourne que les valeurs comprise dans les balises XML.
    Vous ne feriez pas un (simple) echo par hasard ? Quel est votre code ? Obtenez-vous le même comportement en changeant de source ?


    Julp.

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2003
    Messages : 48
    Par défaut
    Désolé pour le délestage, vacances oblige.

    Exactement je fais un 'simple' echo. voici 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
    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
     
     
    setlocale(LC_TIME, "fr_FR"); // ou "fr"
     
    $partner = "";
    $ville = "SZXX0010"; $vname="Delémont";
    $jours = 2;
    $url = "http://xoap.weather.com/weather/local/".$ville."?cc=*&unit=s&dayf=".$jours;
    // Conversion Fahrenheit->Celsius
    function f2c($t) { return round(($t-32)*5/9); }
     
    // Lecture d'un fichier XML
    function lit_xml($chaine,$isFile,$item,$champs) {
     
    	// on lit le fichier ou la chaîne
    	if($isFile) { $chaine = @file_get_contents($chaine); }
     
       if($chaine) {
          // on explode sur <item>
          $tmp = preg_split("/<\/?".$item.">/",$chaine);
     
          // pour chaque <item>
          for($i=1;$i<sizeof($tmp);$i++)
             // on lit les champs demandés <champ>
             foreach($champs as $champ) {
                $tmp2 = preg_split("/<\/?".$champ.">/",$tmp[$i]);
                // on ajoute au tableau
                $tmp3[$champ][] = trim(@$tmp2[1]);
             }
          // et on retourne le tableau
          return @$tmp3;
       }
    }
    //---------------
    $ch = curl_init($url);
    //curl_setopt($ch,CRULOPT_URL,$url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_NOBODY, FALSE);
    $response = curl_exec($ch);
    curl_close($ch);
    $url=$response;
    //echo $url;
    //-----------------
    //$url="meteo/SZXX0010.xml";
    // Extraction primaire
    $xml = lit_xml($url,true,"day d=.*",array("hi","low","part p=\"d\"","part p=\"n\""));
     
    // Extraction des icones, messages et du taux d'humidité
    for($i=0;$i<$jours;$i++) {
     
     
       $tmp = preg_split("/<\/?icon>/",$xml["part p=\"d\""][$i]);
       $xml["icond"][$i] = $tmp[1];
       $tmp = preg_split("/<\/?t>/",$xml["part p=\"d\""][$i]);
       $xml["altd"][$i] = $tmp[1];
       $tmp = preg_split("/<\/?hmid>/",$xml["part p=\"d\""][$i]);
       $xml["hmid"][$i] = $tmp[1];
       $tmp = preg_split("/<\/?icon>/",$xml["part p=\"n\""][$i]);
       $xml["iconn"][$i] = $tmp[1];
       $tmp = preg_split("/<\/?t>/",$xml["part p=\"n\""][$i]);
       $xml["altn"][$i] = $tmp[1];
    }
     
    ?>
     
    <STYLE type="text/css">
    <!--
       .titre { color: #000000 }
       .sstitre { color: #858586 }
    .Style2 {
    	font-family: Arial, Helvetica, sans-serif;
    	font-size: 10px;
    }
    .Style3 {
    	color: #858586;
    	font-family: Arial, Helvetica, sans-serif;
    	font-size: 10px;
    }
    .Style4 {font-family: Arial, Helvetica, sans-serif; font-size: 10px; color: #000000; }
     
    .date {
    	font-family: Verdana, sans-serif;
    	font-size: 12px;	
    	font-style: normal;
    	line-height: normal;
    	font-weight: normal;
    	color: #0493CF
    } 
     
    -->
     
     
     
    </STYLE>
     
    <table width="100%">
     
       <? for($i=0;$i<$jours;$i++) { ?>
          <tr>
            <td class=corps><table width="100%">
              <tr>
                <td colspan=3 class="date">
                <?=ucfirst(strftime("%A %d %B %Y",time()+$i*24*3600))?>
                </strong></font></td>
              </tr>
              <tr>
                <td width="352" class="date"><font color="#000000">Max:
                  <?=($xml["hi"][$i]=="N/A")?"N/A":f2c($xml["hi"][$i])."°C"?>
                </font></td>
                <td width="295" class=Style4><font color="#000000">JOUR</font></td>
                <td width="318" class=Style4><font color="#000000">NUIT</font></td>
              </tr>
              <tr>
                <td class="Style4"><font color="#000000">Min:
                  <?=($xml["low"][$i]=="N/A")?"N/A":f2c($xml["low"][$i])."°C"?>
                </font></td>
                <td rowspan=2 class="Style2"><font color="#000000"><img src="meteo/img/<?=$xml["icond"][$i]?>.png" alt="<?=$xml["altd"][$i]?>"
                width=40></font></td>
                <td rowspan=2 class="Style2"><font color="#000000"><img src="meteo/img/<?=$xml["iconn"][$i]?>.png" alt="<?=$xml["altn"][$i]?>"
                width=40></font></td>
              </tr>
              <tr>
                <td class="Style4"><font color="#000000">H%:
                  <?=$xml["hmid"][$i]?>
                </font></td>
              </tr>
            </table></td>
          </tr>
       <? } ?>
    </table>

  10. #10
    Membre expérimenté

    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
    Par défaut
    Citation Envoyé par staive
    Exactement je fais un 'simple' echo.
    Dans ce cas éditez la source et ô magie vous verrez l'ensemble de votre document XML. (pour l'afficher tel qu'il est là il faut appliquer la fonction htmlentities par exemple).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $xml = lit_xml($url,false,"day d=.*",array("hi","low","part p=\"d\"","part p=\"n\""));
    Dans cet appel il faut passer votre paramètre isFile à faux puisqu'il ne s'agit plus d'une URL ou d'un Fichier mais directement de la chaîne à traiter. (si j'ai bien compris la logique).


    Julp.

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2003
    Messages : 48
    Par défaut
    Effectivement, je cherchais du mauvais coté.

    Je te remercie pour ton aide.

    Ca fonctionne impeccable.

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

Discussions similaires

  1. Ouvrir un fichier XML à partir d'une URL
    Par Deblang dans le forum C++
    Réponses: 8
    Dernier message: 12/04/2011, 23h08
  2. Réponses: 6
    Dernier message: 01/12/2010, 22h33
  3. Lire un fichier XML à partir d'une URL
    Par spaukensen dans le forum Langage
    Réponses: 3
    Dernier message: 18/03/2008, 11h03
  4. [DOM] [JAVA + XML] Ouvrir un fichier xml à partir d'une url
    Par Hell dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 09/06/2005, 00h06

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