Postat la
26-Jun-2009
ora
10:29 am
de
[Chetroesu]
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 parentNode) throws 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 ((Element) node).getAttribute(attrName); } catch (Exception e) { return ""; } } } |
Daca este nevoie de explicatii, astept sa ma contactati.