Page 1 sur 1

Extraire information d'un XML

Posté : 16 juin 2022, 18:53
par benws2305
Bonjour,
J'aimerais pouvoir extraire du fichier XML publié par météo france pour région à chaque vigilance orange, le texte contenu dans "Evolution prévue :"
Cependant, j'ai suivi quelques tutos simples pour extraire directement depuis les balise mais j'avoue que je suis perdu pour la suite du code malgré le print pour récupérer cette donnée.

Voilà ce que cela donne => https://meteo-gournaysuraronde.fr/texte_vigilance.php

J'aimerai (à l'heure où j'écris ces lignes car si une nouvelle vigilance est publiée d'ici là forcément cela va changer) récupérer ceci, dans la partie Evolution prévue
[0] => La dégradation orageuse a atteint le Nord et le Pas-de-Calais en première partie de nuit. Ces orages ont donné de forts cumuls de pluie, quelques rafales de vent autour de 50 à 70 km/h ainsi que de la grêle.
[1] => Actuellement ils ont complètement évacué la Picardie et finissent d'évacuer le Nord-Pas-de-Calais par le nord.

Code : Tout sélectionner

<?php $fichier = 'https://vigilance2019.meteofrance.com/data/WXQQ60_LFPW_.xml'; $contenu = simplexml_load_file($fichier); ?> <?php echo '<pre>'; print_r($contenu); echo '</pre>'; ?>
Comment puis-je procéder simplement ?
Il me faut d'autres choses aussi mais je pense que si on me montre la structure pour récupérer déjà ce morceau je pourrai me débrouiller pour extraire d'autres infos.

Merci d'avance !

Re: Extraire information d'un XML

Posté : 17 juin 2022, 09:27
par Spols
Salut,

l'idée va être de trouver la balise titre avec l'attribut name = Description puis parcourir les paragraphes pour trouver celui qui qui a le texte Evolution prévue: dans la balise intitule et récupèrer les contenus des balises texte

C'est la méthode xpath qui te sera utile dans un premier temps
Tu peux aussi parcourir ton objet pour trouver ce qu'il te faut.
La doc sur php.net est bien faite et t'aidera

Re: Extraire information d'un XML

Posté : 17 juin 2022, 17:49
par benws2305
Merci pour la réponse, en cherchant un peu en effet j'ai réussi à trouver comment utiliser xpath, voilà ce que cela donne :
https://meteo-gournaysuraronde.fr/texte_vigilance.php

Code : Tout sélectionner

$fichier = 'https://vigilance2019.meteofrance.com/data/WXQQ60_LFPW_.xml'; $xml = simplexml_load_file($fichier); foreach ($xml->xpath('Descriptif[2]/Titre/Paragraphe[3]') as $texte_actuel) { echo $texte_actuel->Intitule .'<br/>'; echo $texte_actuel->Texte[0] . '<br/>'; if (!empty($texte_actuel->Texte[1])) { echo $texte_actuel->Texte[1] . '<br/>'; } if (!empty($texte_actuel->Texte[2])) { echo $texte_actuel->Texte[2] . '<br/>'; } if (!empty($texte_actuel->Texte[3])) { echo $texte_actuel->Texte[3] . '<br/>'; } if (!empty($texte_actuel->Texte[4])) { echo $texte_actuel->Texte[4] . '<br/>'; } if (!empty($texte_actuel->Texte[5])) { echo $texte_actuel->Texte[5] . '<br/>'; } if (!empty($texte_actuel->Texte[6])) { echo $texte_actuel->Texte[6] . '<br/>'; } echo '<br/>'; } foreach ($xml->xpath('Descriptif[2]/Titre/Paragraphe[4]') as $texte_previ) { echo $texte_previ->Intitule .'<br/>'; echo $texte_previ->Texte[0] . '<br/>'; if (!empty($texte_previ->Texte[1])) { echo $texte_previ->Texte[1] . '<br/>'; } if (!empty($texte_previ->Texte[2])) { echo $texte_previ->Texte[2] . '<br/>'; } if (!empty($texte_previ->Texte[3])) { echo $texte_previ->Texte[3] . '<br/>'; } if (!empty($texte_previ->Texte[4])) { echo $texte_previ->Texte[4] . '<br/>'; } if (!empty($texte_previ->Texte[5])) { echo $texte_previ->Texte[5] . '<br/>'; } if (!empty($texte_previ->Texte[6])) { echo $texte_previ->Texte[6] . '<br/>'; } echo '<br/>'; }