0

私は xml の初心者で、少し助けが必要です。

xml ファイルから 1 つのデータのみを抽出し、それを 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 に答える