Posts Tagged ‘xpath’

Preluare curs valutar BNR update

Acum ceva vreme am postat o modalitate rapidă de a preluat cursul valutar complet de la bnr. Azi un prieten căuta o modalitate la fel de rapidă de a prelua cursul valutar, însă doar pentru USD şi EURO, fără să preia toate valutele şi să verifice dacă sunt cele dorite. Cum se poate rezolva lucrul ăsta? Răspunsul este XPath.


<?php
 /*
 * initiez clasa DOMDocument, reprezentand fisierul xml incarcat
 */
 $dom = new DOMDocument();
 $dom->preserveWhiteSpace = false;

 /*
 * incarc fisierul xml, specificand adresa completa
 */
 $dom->load( "http://www.bnro.ro/nbrfxrates.xml" , 'http://www.bnr.ro/xsd');

 /*
 *  preiau intr-un obiect iterabil (DOMNodeList) lista elementelor ce indeplinesc doleantele mele
 */
 $valute = $xpath->query( "xsd:Body/xsd:Cube/xsd:Rate[@currency='USD' or @currency='EUR']" );
 /*
 * verific daca sunt elemente de acest tip
 */

 if ( $valute )
 {
 $new_valute = array();

 /*
 * in caz afirmativ, iterez prin ele si le preiau intr-un array ce-mi convine
 */
 foreach ( $valute as $valuta )
 {
 $new_valute[$valuta->getAttribute('currency')] = $valuta->nodeValue;
 }
 }
 ?>

Prin XPath putem selecta rapid doar elementele care corespund anumitor criterii, căutând după o cale (path) indicată de noi.  În cazul în care fişierul xml conţine namespace-uri (ca în cazul acesta) ele trebuie anunţate la început, pentru că altfel nu vom primi nici un rezultat. Good luck ;)

Tags: , , , ,
Posted in Articole, PHP No Comments »