<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Marius Barbulescu &#124; Freshcolors &#187; curs valutar</title>
	<atom:link href="http://www.freshcolors.ro/blog/tag/curs-valutar/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.freshcolors.ro/blog</link>
	<description>Vor încerca să ne-ntreacă, dar n-o să poată…</description>
	<lastBuildDate>Tue, 18 Jan 2011 12:00:33 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Preluare curs valutar BNR update</title>
		<link>http://www.freshcolors.ro/blog/2009/08/20/preluare-curs-valutar-bnr-update/</link>
		<comments>http://www.freshcolors.ro/blog/2009/08/20/preluare-curs-valutar-bnr-update/#comments</comments>
		<pubDate>Thu, 20 Aug 2009 12:25:43 +0000</pubDate>
		<dc:creator>M.B.</dc:creator>
				<category><![CDATA[Articole]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[bnr]]></category>
		<category><![CDATA[curs valutar]]></category>
		<category><![CDATA[dom]]></category>
		<category><![CDATA[xpath]]></category>

		<guid isPermaLink="false">http://www.freshcolors.ro/blog/?p=241</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>Acum ceva vreme am postat<a href="http://www.freshcolors.ro/blog/2008/09/preluarea-cursului-bnr-in-mai-putin-de-10-linii-de-cod"> o modalitate rapidă</a> 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.</p>
<pre class="brush:php">
 /*
 * initiez clasa DOMDocument, reprezentand fisierul xml incarcat
 */
 $dom = new DOMDocument();
 $dom-&gt;preserveWhiteSpace = false;

 /*
 * incarc fisierul xml, specificand adresa completa
 */
 $dom-&gt;load( "http://www.bnro.ro/nbrfxrates.xml");
/*
* initializare XPath
*/
$xpath = new DOMXpath($dom);
$xpath->registerNamespace('xsd', 'http://www.bnr.ro/xsd');
 /*
 *  preiau intr-un obiect iterabil (DOMNodeList) lista elementelor ce indeplinesc doleantele mele
 */
 $valute = $xpath-&gt;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-&gt;getAttribute('currency')] = $valuta-&gt;nodeValue;
 }
 }
</pre>
<p>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 <img src='http://www.freshcolors.ro/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><em>last update: 01.2011.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.freshcolors.ro/blog/2009/08/20/preluare-curs-valutar-bnr-update/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Preluarea cursului BNR în mai puţin de 10 linii de cod</title>
		<link>http://www.freshcolors.ro/blog/2008/09/25/preluarea-cursului-bnr-in-mai-putin-de-10-linii-de-cod/</link>
		<comments>http://www.freshcolors.ro/blog/2008/09/25/preluarea-cursului-bnr-in-mai-putin-de-10-linii-de-cod/#comments</comments>
		<pubDate>Thu, 25 Sep 2008 20:37:37 +0000</pubDate>
		<dc:creator>M.B.</dc:creator>
				<category><![CDATA[Articole]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[bnr]]></category>
		<category><![CDATA[curs valutar]]></category>
		<category><![CDATA[dom]]></category>
		<category><![CDATA[preluare]]></category>

		<guid isPermaLink="false">http://misterjinx.wordpress.com/?p=113</guid>
		<description><![CDATA[Azi am fost nevoit să preiau cursul valutar de pe site-ul bnr pentru a-l stoca în baza de date.  Ştiu că erau pe nu ştiu ce site-uri puse la dispoziţie coduri care fac treaba asta, însă după mine într-o manieră foarte alandala. După mine cel mai simplu de parsat un fişier xml (cum este [...]]]></description>
			<content:encoded><![CDATA[<p>Azi am fost nevoit să preiau cursul valutar de pe site-ul bnr pentru a-l stoca în baza de date.  Ştiu că erau pe nu ştiu ce site-uri puse la dispoziţie coduri care fac treaba asta, însă după mine într-o manieră foarte alandala. După mine cel mai simplu de parsat un fişier xml (cum este cel pus la dispoziţie de bnr) este folosind extensiile puse la dispoziţie de php, SimpleXML şi DOM. Eu am ales să folosesc DOM, deoarece rezolvă foarte repede ceea ce am avut nevoie.</p>
<p>Structura fişierului xml care trebuie parsat este urătoarea:</p>
<pre class="brush:xml">
<dataSet xsi:schemaLocation="http://www.bnr.ro/xsd nbrfxrates.xsd">
<header>
<sender>National Bank of Romania</sender>
<sendingDate>2008-09-25</sendingDate>
<messageType>DR</messageType>
</header>
<body>
<subject>Reference rates</subject>
<origCurrency>RON</origCurrency>
<cube date="2008-09-25">
<rate currency="AUD">2.0985</rate>
<rate currency="BGN">1.8802</rate>
<rate currency="CAD">2.4202</rate>
<rate currency="CHF">2.3059</rate>
<rate currency="CZK">0.1505</rate>
<rate currency="DKK">0.4930</rate>
<rate currency="EGP">0.4583</rate>
<rate currency="EUR">3.6773</rate>
<rate currency="GBP">4.6475</rate>
<rate currency="HUF" multiplier="100">1.5275</rate>
<rate currency="JPY" multiplier="100">2.3608</rate>
<rate currency="MDL">0.2414</rate>
<rate currency="NOK">0.4452</rate>
<rate currency="PLN">1.1040</rate>
<rate currency="RUB">0.1000</rate>
<rate currency="SEK">0.3800</rate>
<rate currency="SKK">0.1214</rate>
<rate currency="TRY">2.0194</rate>
<rate currency="USD">2.5001</rate>
<rate currency="XAU">71.4560</rate>
<rate currency="XDR">3.9396</rate>
</cube>
</body>
</dataSet>
</pre>
<p>(evident documentul nu este valid, dar nu ne interesează asta <img src='http://www.freshcolors.ro/blog/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  )</p>
<p>După cum se observă, ce trebuie noi să facem este preluarea tuturor tagurilor cu numele „Rate”.  Apoi preluăm  numele valutei folosind metoda getAttribute, care returnează valoarea atributului cu numele specificat.</p>
<p>Iată codul care pune în aplicare cele spuse mai sus:</p>
<pre class="brush:xml">
/*
* initiez clasa DOMDocument, reprezentand fisierul xml incarcat
*/
$dom = new DOMDocument();
/*
* incarc fisierul xml, specificand adresa completa
*/
$dom->load( "http://www.bnro.ro/nbrfxrates.xml" );

/*
* preiau intr-un obiect iterabil lista elementelor(tagurile) cu numele specificat
*/
$valute = $dom->getElementsByTagName('Rate');

/*
* verific daca sunt elemente de acest tip
*/
if ( $valute->length != 0 )
{
/*

* in caz afirmativ, iterez prin ele si le afiez

* ( evident le pot stoca intr-un array sau chiar in baza de date,

* dupa caz)
*/
foreach ( $valute as $valuta )
{
echo $valuta->getAttribute(currency). " - " .$valuta->nodeValue . "<br/>";
}
}
</pre>
<p>Dacă nu punem la socoteală, liniile comentate, putem prelua codul bnr în doar 8 linii de cod ! În acelaşi mod se pot prelua şi diferite feed-uri de pe diverse site-uri. Baftă <img src='http://www.freshcolors.ro/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.freshcolors.ro/blog/2008/09/25/preluarea-cursului-bnr-in-mai-putin-de-10-linii-de-cod/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

