0

我是 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>

我只想从 Currency Code="978" Name EUR /Name 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>
4

1 回答 1

0

使用这个 XPath:

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

或者

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

要获取数字,您可以执行以下操作:

var buyRate = Number(nodes[i].childNodes[0].nodeValue);
于 2012-11-12T10:10:04.200 回答