récupérer une valeur dans un fichier XML

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : récupérer une valeur dans un fichier XML

Re: récupérer une valeur dans un fichier XML

par Saian » 13 févr. 2019, 22:23

Salut, y a surement plus simple mais avec les namespaces et compagnie... et je suis pas un spécialiste de la lecture de fichiers xml ^^
$content = file_get_contents('file.xml');
preg_match('`<Cube>[\S\s]*<\/Cube>`', $content, $matches);
$xml = simplexml_load_string($matches[0]);
$currency = $xml->xpath("//Cube[@currency='GBP']")[0];
echo $currency['rate']."\n";
PS : je n'arrivais pas à trouver le bon xpath pour extraire le noeud du document complet alors j'ai décidé d'extraire tous les noeuds Cube avant de les charger avec simple xml et comme ça le xpath fonctionne. ^^

Sinon y avait cette solution toute simple, mais elle me plait moins car on fait une boucle...
$xml = simplexml_load_file('file.xml');
foreach ($xml->Cube->Cube->Cube as $cube)
  if ($cube['currency'] == 'GBP')
    break ;
echo $cube['rate']."\n";

récupérer une valeur dans un fichier XML

par Fat » 13 févr. 2019, 18:52

Bonjour à tous,
J'ai besoin de récupérer le taux de change de la livre sterling à partir d'un fichier XML en ligne.
Voici le contenu du fichier :

Code : Tout sélectionner

<gesmes:Envelope xmlns:gesmes="http://www.gesmes.org/xml/2002-08-01" xmlns="http://www.ecb.int/vocabulary/2002-08-01/eurofxref"> <script id="tinyhippos-injected"/> <gesmes:subject>Reference rates</gesmes:subject> <gesmes:Sender> <gesmes:name>European Central Bank</gesmes:name> </gesmes:Sender> <Cube> <Cube time="2019-02-12"> <Cube currency="USD" rate="1.1296"/> <Cube currency="JPY" rate="124.70"/> <Cube currency="BGN" rate="1.9558"/> <Cube currency="CZK" rate="25.871"/> <Cube currency="DKK" rate="7.4623"/> <Cube currency="GBP" rate="0.87705"/> <Cube currency="HUF" rate="317.79"/> <Cube currency="PLN" rate="4.3259"/> <Cube currency="RON" rate="4.7414"/> <Cube currency="SEK" rate="10.4725"/> <Cube currency="CHF" rate="1.1381"/> <Cube currency="ISK" rate="136.60"/> <Cube currency="NOK" rate="9.7950"/> <Cube currency="HRK" rate="7.4080"/> <Cube currency="RUB" rate="74.0368"/> <Cube currency="TRY" rate="5.9365"/> <Cube currency="AUD" rate="1.5926"/> <Cube currency="BRL" rate="4.2013"/> <Cube currency="CAD" rate="1.4969"/> <Cube currency="CNY" rate="7.6477"/> <Cube currency="HKD" rate="8.8656"/> <Cube currency="IDR" rate="15891.78"/> <Cube currency="ILS" rate="4.1112"/> <Cube currency="INR" rate="79.8010"/> <Cube currency="KRW" rate="1269.23"/> <Cube currency="MXN" rate="21.7394"/> <Cube currency="MYR" rate="4.6058"/> <Cube currency="NZD" rate="1.6767"/> <Cube currency="PHP" rate="58.858"/> <Cube currency="SGD" rate="1.5334"/> <Cube currency="THB" rate="35.356"/> <Cube currency="ZAR" rate="15.5521"/> </Cube> </Cube> </gesmes:Envelope>
Je cherche depuis une bonne heure comment récupérer le taux de la livre avec simplexml.
Je m'arrache les cheveux car je suis sûr que c'est super simple. Mais je suis une grosse quiche, alors A L'AIDE !!!

Merci à ceux qui aideront la Quiche.