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: bnr, curs valutar, dom, PHP, xpath
Add a Comment Trackback