Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Se placer dans un fichier xml ?

4 réponses
Avatar
paul
Bonjour,

j'ai mis en ligne un code pour indiquer la météo d'une ville. Il est
tiré d'ici :
<http://www.asp-php.net/ressources/bouts_de_code.php?codid=340>

Ce code va prendre comme base du jour la valeur d=0 du xml dans ces
noeuds :

<day d="0" t="Wednesday" dt="Dec 13">
(...)
<day d="1" t="Thursday" dt="Dec 14">

puis il extrait les données :
$xml = $this->litXML($chaine,false,"day d=.*",array("hi","low","part
p=\"d\"","part p=\"n\"","wind"));


Oui mais il fait ça qu'on soit avant ou après minuit et jusqu'à la mise
à jour du fichier par les américains dans la matinée..
C'est à dire que les données sont fausses 1/4 du temps parce que "d" a
varié depuis minuit !!!


Il vaudrait donc mieux se baser sur day dt
<day d="0" t="Wednesday" dt="Dec 13">

Oui mais comment faire pour se placer là ?

J'ai essayé :
$xml = $this->litXML($chaine,false,"day dt= ...
mais ça ne fonctionne pas.
:-(

Si vous pouviez me mettre sur la piste : Merci !

Pour le reste, je pense trouver la valeur du jour dans le format de
dt="Dec 13", et le faire évoluer en me basant sur :
date("M j", strtotime("+$i day"))

Paul

4 réponses

Avatar
Francois Girault
Bonjour,

Bonsoir,


j'ai mis en ligne un code pour indiquer la météo d'une ville. Il est
tiré d'ici :
<http://www.asp-php.net/ressources/bouts_de_code.php?codid40>



Si j'en crois le lien cité, la fonction lit_xml parse le xml à coup
d'expressions régulières. Ah quoi ça sert que le monsieur Zend il se
décarcasse à faire des api SimpleXML hein !

http://fr2.php.net/simplexml

[snip]
Oui mais il fait ça qu'on soit avant ou après minuit et jusqu'à la mise
à jour du fichier par les américains dans la matinée..
C'est à dire que les données sont fausses 1/4 du temps parce que "d" a
varié depuis minuit !!!



hum, là j'ai un peu de mal à comprendre si la lecture du fichier xml
n'est pas en cache qqpart. 'fin bon, c'est pas le problème.


Il vaudrait donc mieux se baser sur day dt
<day d="0" t="Wednesday" dt="Dec 13">

Oui mais comment faire pour se placer là ?



Faire une requête XPath adéquate :

http://fr2.php.net/manual/fr/function.simplexml-element-xpath.php

et pourquoi pas, tant qu'on y est, un cache auto-destructible (basé sur
la date de modification d'un fichier) à minuit pour économiser la bp
d'en face.


Si vous pouviez me mettre sur la piste : Merci !



Mes 2 centimes ...

--
FG

Avatar
paul
In article <45a3f28f$0$294$,
Francois Girault wrote:

Bonjour,

Bonsoir,


j'ai mis en ligne un code pour indiquer la météo d'une ville. Il est
tiré d'ici :
<http://www.asp-php.net/ressources/bouts_de_code.php?codid40>



Si j'en crois le lien cité, la fonction lit_xml parse le xml à coup
d'expressions régulières. Ah quoi ça sert que le monsieur Zend il se
décarcasse à faire des api SimpleXML hein !

http://fr2.php.net/simplexml


Oui je sais. Tu as raison.

Mais avant d'apprendre simplexml et de tout réécrire le code, j'aurais
voulu essayer de bricoler rapidement (???...) le code existant.
;-)


[snip]
Oui mais il fait ça qu'on soit avant ou après minuit et jusqu'à la mise
à jour du fichier par les américains dans la matinée..
C'est à dire que les données sont fausses 1/4 du temps parce que "d" a
varié depuis minuit !!!



hum, là j'ai un peu de mal à comprendre si la lecture du fichier xml
n'est pas en cache qqpart. 'fin bon, c'est pas le problème.


Ben non elle n'est pas en cache quelque part

Là je suis un peu confus de ne pas l'avoir fait encore.
:-(



Il vaudrait donc mieux se baser sur day dt
<day d="0" t="Wednesday" dt="Dec 13">

Oui mais comment faire pour se placer là ?



Faire une requête XPath adéquate :

http://fr2.php.net/manual/fr/function.simplexml-element-xpath.php


Argh...
Je sens qu'il va falloir m'y coller


et pourquoi pas, tant qu'on y est, un cache auto-destructible (basé sur
la date de modification d'un fichier) à minuit pour économiser la bp
d'en face.


Oui c'est une bonne idée.
Euh... tu peux me dire comment on fait ?

Merci
Paul


Avatar
Francois Girault

Oui c'est une bonne idée.
Euh... tu peux me dire comment on fait ?



Comme ça ? :

http://cjoint.com/?buj4Qx0LOx

Attention à rendre le répertoire 'cache' accessible en écriture au
propriétaire du processus php, ou affecter la variable
Weather::.$cache_dir à un chemin valide.

Et aussi, ne pas passer le code ville dans l'url, je crois qu'il y a une
faille potientelle car je m'en sers dans le nom du fichier cache; je
voulais faire mumuse avec simplexml donc 15 euros et un mars ne sont pas
fournis (il doit manquer des tests pour des cas en erreur).

Je voulais voir aussi si on pouvait faire un peu plus propre que le
script précédent tant en php qu'en html. Cependant je garantie pas
complètement le résultat, mais j'ai trouvé l'exercice intéressant :)

--
FG

Avatar
paul
In article <45b1dd0e$0$26727$,
Francois Girault wrote:


Oui c'est une bonne idée.
Euh... tu peux me dire comment on fait ?



Comme ça ? :

http://cjoint.com/?buj4Qx0LOx

Attention à rendre le répertoire 'cache' accessible en écriture au
propriétaire du processus php, ou affecter la variable
Weather::.$cache_dir à un chemin valide.

Et aussi, ne pas passer le code ville dans l'url, je crois qu'il y a une
faille potientelle car je m'en sers dans le nom du fichier cache; je
voulais faire mumuse avec simplexml donc 15 euros et un mars ne sont pas
fournis (il doit manquer des tests pour des cas en erreur).

Je voulais voir aussi si on pouvait faire un peu plus propre que le
script précédent tant en php qu'en html. Cependant je garantie pas
complètement le résultat, mais j'ai trouvé l'exercice intéressant :)


Waouh...
C'est super clean !

Je viens de le tester et on passe bien au jour suivant à 00:00
;-)

Je vais décortiquer tout ça pour apprendre simplexml, la mise en cache,
etc...

Grand Merci !
Super...

Paul