Pentru cei care doresc o integrare in site a cursului de schimb valutar, BNR pune la dispozitie un fisier XML care contine ratele de schimb relativ la moneda nationala si care poate fi descarcat de la adresa: http://www.bnr.ro/nbrfxrates.xml. Voi prezenta un cod simplu Java prin care se pot obtine si integra in site cursuriele de schimb penru diverse valute.

Forma fisierului XML este urmatoarea:

    xml version="1.0" encoding="utf-8"?>
<DataSet xmlns="http://www.bnr.ro/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.bnr.ro/xsd nbrfxrates.xsd">
<Header>
<Sender>National Bank of RomaniaSender>
<SendingDate>2009-06-23SendingDate>
<MessageType>DRMessageType>
Header>
<Body>
<Subject>Reference ratesSubject>
<OrigCurrency>RONOrigCurrency>
<Cube date="2009-06-23">
<Rate currency="AED">0.8277Rate>
<Rate currency="AUD">2.3846Rate>
<Rate currency="BGN">2.1643Rate>
<Rate currency="BRL">1.4972Rate>
<Rate currency="CAD">2.6339Rate>
<Rate currency="CHF">2.8158Rate>
<Rate currency="CNY">0.4447Rate>
<Rate currency="CZK">0.1621Rate>
<Rate currency="DKK">0.5686Rate>
<Rate currency="EGP">0.5427Rate>
<Rate currency="EUR">4.2329Rate>
<Rate currency="GBP">4.9381Rate>
<Rate currency="HUF" multiplier="100">1.4999Rate>
<Rate currency="INR">0.0624Rate>
<Rate currency="JPY" multiplier="100">3.1907Rate>
<Rate currency="KRW" multiplier="100">0.2355Rate>
<Rate currency="MDL">0.2736Rate>
<Rate currency="MXN">0.2276Rate>
<Rate currency="NOK">0.4651Rate>
<Rate currency="NZD">1.9209Rate>
<Rate currency="PLN">0.9327Rate>
<Rate currency="RSD">0.0453Rate>
<Rate currency="RUB">0.0964Rate>
<Rate currency="SEK">0.3808Rate>
<Rate currency="TRY">1.9294Rate>
<Rate currency="UAH">0.3986Rate>
<Rate currency="USD">3.0391Rate>
<Rate currency="XAU">89.9050Rate>
<Rate currency="XDR">4.7023Rate>
<Rate currency="ZAR">0.3696Rate>
Cube>
Body>
DataSet>

Clasa pentru preluarea cursului valutar este urmatoarea:

package ro.genesys.app.gesyf_prim.action;

import java.io.BufferedInputStream;
import java.net.URL;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class CheckBNRCurrencyRate {
  public static final String TAG_BODY_CUBE = "Cube";
  public static final String ATTR_RATE_DATE = "date";
  public static final String ATTR_RATE_CURRENCY = "currency";

  public CheckBNRCurrencyRate(){}
    
  public void checkCurrencyRate() throws Exception {
    boolean ok = true;
    
    //Incarcam XML-ul intr-un input stream
    BufferedInputStream is = new BufferedInputStream(new URL("http://www.bnr.ro/nbrfxrates.xml").openStream());

    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    DocumentBuilder db = dbf.newDocumentBuilder();

    Document domDoc = db.parse(is);
    domDoc.getDocumentElement().normalize();
    
    //scoatem nodul continand ratele de shimb
    Node cube = getNodeByName(TAG_BODY_CUBE, domDoc.getDocumentElement());
    if(cube!=null){      
      String strDate = getAttributeValue(cube, ATTR_RATE_DATE);

      //iteram copii pentru fiecare valuta, pentru a-i lua rata de schimb
      NodeList childNodesList = cube.getChildNodes();
      for (int i = 0; i < childNodesList.getLength(); i++) {
        Node node = childNodesList.item(i);

        String strRate = node.getTextContent();
        
        //
        //Codul tau
        //
      }        
    }
  }

  public Node getNodeByName(String nodeName, Node parentNodethrows Exception {
    if (parentNode.getNodeName().equals(nodeName))
      return parentNode;
    
    NodeList list = parentNode.getChildNodes();
    for (int i = 0; i < list.getLength(); i++) {
      Node node = getNodeByName(nodeName, list.item(i));
      if (node != null
        return node;
    }

    return null;
  }
  
  private String getAttributeValue(Node node, String attrName) {
    try {
      return ((Elementnode).getAttribute(attrName);
    catch (Exception e) {
      return "";
    }
  }
}

 Daca este nevoie de explicatii, astept sa ma contactati.