2012-11-12 2 views
0

저는 XML 초보자이며 약간의 도움이 필요합니다.XML 데이터를 자바 스크립트 변수

xml 파일에서 하나의 데이터 만 추출하여 javascript 변수에 넣으 려면 수학 계산을 할 수 있습니다.

XML 파일은 다음과 같습니다

<?xml version="1.0" encoding="windows-1250"?> 
<ExchRates> 
    <ExchRate> 
    <Bank>Privredna banka Zagreb</Bank> 
    <CurrencyBase>HRK</CurrencyBase> 
    <Date>08.11.2012.</Date> 
    <Currency Code="036"> 
     <Name>AUD</Name> 
     <Unit>1</Unit> 
     <BuyRateCache>6,005217</BuyRateCache> 
     <BuyRateForeign>6,065876</BuyRateForeign> 
     <MeanRate>6,158250</MeanRate> 
     <SellRateForeign>6,250624</SellRateForeign> 
     <SellRateCache>6,313130</SellRateCache> 
    </Currency> 
    <Currency Code="124"> 
     <Name>CAD</Name> 
     <Unit>1</Unit> 
     <BuyRateCache>5,798460</BuyRateCache> 
     <BuyRateForeign>5,857030</BuyRateForeign> 
     <MeanRate>5,946223</MeanRate> 
     <SellRateForeign>6,035416</SellRateForeign> 
     <SellRateCache>6,095770</SellRateCache> 
    </Currency> 
    <Currency Code="203"> 
     <Name>CZK</Name> 
     <Unit>1</Unit> 
     <BuyRateCache>0,286575</BuyRateCache> 
     <BuyRateForeign>0,290939</BuyRateForeign> 
     <MeanRate>0,296877</MeanRate> 
     <SellRateForeign>0,302815</SellRateForeign> 
     <SellRateCache>0,305843</SellRateCache> 
    </Currency> 
    <Currency Code="208"> 
     <Name>DKK</Name> 
     <Unit>1</Unit> 
     <BuyRateCache>0,984366</BuyRateCache> 
     <BuyRateForeign>0,994309</BuyRateForeign> 
     <MeanRate>1,009451</MeanRate> 
     <SellRateForeign>1,024593</SellRateForeign> 
     <SellRateCache>1,034839</SellRateCache> 
    </Currency> 
    <Currency Code="348"> 
     <Name>HUF</Name> 
     <Unit>100</Unit> 
     <BuyRateCache>2,575364</BuyRateCache> 
     <BuyRateForeign>2,614583</BuyRateForeign> 
     <MeanRate>2,667942</MeanRate> 
     <SellRateForeign>2,721301</SellRateForeign> 
     <SellRateCache>2,748514</SellRateCache> 
    </Currency> 
    <Currency Code="392"> 
     <Name>JPY</Name> 
     <Unit>100</Unit> 
     <BuyRateCache>7,118160</BuyRateCache> 
     <BuyRateForeign>7,226558</BuyRateForeign> 
     <MeanRate>7,374039</MeanRate> 
     <SellRateForeign>7,521520</SellRateForeign> 
     <SellRateCache>7,596735</SellRateCache> 
    </Currency> 
    <Currency Code="578"> 
     <Name>NOK</Name> 
     <Unit>1</Unit> 
     <BuyRateCache>1,002503</BuyRateCache> 
     <BuyRateForeign>1,012629</BuyRateForeign> 
     <MeanRate>1,028050</MeanRate> 
     <SellRateForeign>1,043471</SellRateForeign> 
     <SellRateCache>1,053906</SellRateCache> 
    </Currency> 
    <Currency Code="752"> 
     <Name>SEK</Name> 
     <Unit>1</Unit> 
     <BuyRateCache>0,858113</BuyRateCache> 
     <BuyRateForeign>0,866781</BuyRateForeign> 
     <MeanRate>0,879981</MeanRate> 
     <SellRateForeign>0,893181</SellRateForeign> 
     <SellRateCache>0,902113</SellRateCache> 
    </Currency> 
    <Currency Code="756"> 
     <Name>CHF</Name> 
     <Unit>1</Unit> 
     <BuyRateCache>6,022565</BuyRateCache> 
     <BuyRateForeign>6,083399</BuyRateForeign> 
     <MeanRate>6,239384</MeanRate> 
     <SellRateForeign>6,395369</SellRateForeign> 
     <SellRateCache>6,459323</SellRateCache> 
    </Currency> 
    <Currency Code="826"> 
     <Name>GBP</Name> 
     <Unit>1</Unit> 
     <BuyRateCache>9,192388</BuyRateCache> 
     <BuyRateForeign>9,285240</BuyRateForeign> 
     <MeanRate>9,426640</MeanRate> 
     <SellRateForeign>9,568040</SellRateForeign> 
     <SellRateCache>9,663720</SellRateCache> 
    </Currency> 
    <Currency Code="840"> 
     <Name>USD</Name> 
     <Unit>1</Unit> 
     <BuyRateCache>5,698195</BuyRateCache> 
     <BuyRateForeign>5,755753</BuyRateForeign> 
     <MeanRate>5,903336</MeanRate> 
     <SellRateForeign>6,050919</SellRateForeign> 
     <SellRateCache>6,171937</SellRateCache> 
    </Currency> 
    <Currency Code="977"> 
     <Name>BAM</Name> 
     <Unit>1</Unit> 
     <BuyRateCache>3,727751</BuyRateCache> 
     <BuyRateForeign>3,803828</BuyRateForeign> 
     <MeanRate>3,850028</MeanRate> 
     <SellRateForeign>3,896228</SellRateForeign> 
     <SellRateCache>3,905969</SellRateCache> 
    </Currency> 
    <Currency Code="978"> 
     <Name>EUR</Name> 
     <Unit>1</Unit> 
     <BuyRateCache>7,470000</BuyRateCache> 
     <BuyRateForeign>7,480000</BuyRateForeign> 
     <MeanRate>7,530000</MeanRate> 
     <SellRateForeign>7,580000</SellRateForeign> 
     <SellRateCache>7,590000</SellRateCache> 
    </Currency> 
    <Currency Code="985"> 
     <Name>PLN</Name> 
     <Unit>1</Unit> 
     <BuyRateCache>1,768112</BuyRateCache> 
     <BuyRateForeign>1,795038</BuyRateForeign> 
     <MeanRate>1,831671</MeanRate> 
     <SellRateForeign>1,868304</SellRateForeign> 
     <SellRateCache>1,886987</SellRateCache> 
    </Currency> 
    </ExchRate> 
</ExchRates> 

나는 유일한 통화 코드 = "978"이름 EUR/이름 BuyRateForeign 7,480000/BuyRateForeign 데이터 (값)를 추출합니다.

이 데이터 7,480000은 내게 중요하며 javascript 변수로 추출하여 number()로 변환하고 싶습니다. 그래서이 값으로 수학을 할 수 있습니다.

일부 코드를 시도했지만 화면에 게시 만되어 변수로 가져올 수 없습니다.

<!DOCTYPE html> 
<html> 
<body> 
<script> 
function loadXMLDoc(dname) 
{ 
if (window.XMLHttpRequest) 
    { 
    xhttp=new XMLHttpRequest(); 
    } 
else 
    { 
    xhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xhttp.open("GET",dname,false); 
xhttp.send(""); 
return xhttp.responseXML; 
} 

xml=loadXMLDoc("pbz.xml"); 
path="/ExchRates/ExchRate/Currency[13]/BuyRateForeign" 
// code for IE 
if (window.ActiveXObject) 
{ 
var nodes=xml.selectNodes(path); 

for (i=0;i<nodes.length;i++) 
    { 
    document.write(nodes[i].childNodes[0].nodeValue); 
    document.write("<br>"); 
    } 
} 
// code for Mozilla, Firefox, Opera, etc. 
else if (document.implementation && document.implementation.createDocument) 
{ 
var nodes=xml.evaluate(path, xml, null, XPathResult.ANY_TYPE, null); 
var result=nodes.iterateNext(); 

while (result) 
    { 
    document.write(result.childNodes[0].nodeValue); 
    document.write("<br>"); 
    result=nodes.iterateNext(); 
    } 
} 
</script> 
</body> 
</html> 
+0

브라우저 유형을 확인하는 대신 당신이 원하는 기능 :'if (xml.evaluate) {...}' –

답변

0

사용이 XPath를 : I 시도 코드는 이것이다

/ExchRates/ExchRate/Currency[@Code='978']/BuyRateForeign 

또는

/ExchRates/ExchRate/Currency[Name='EUR']/BuyRateForeign 

이 숫자로 얻으려면, 당신은이 작업을 수행 할 수 있습니다

var buyRate = Number(nodes[i].childNodes[0].nodeValue); 
+0

당신의 조언을 위해 tnx는 문제 해결에 도움이되었습니다. – user1817666