2017-01-18 40 views
0

解析XML這裏是一個我試圖解析XML:問題而Suitescript

<?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> 
     <Publisher>National Bank of Romania</Publisher> 
     <PublishingDate>2017-01-18</PublishingDate> 
     <MessageType>DR</MessageType> 
    </Header> 
    <Body> 
     <Subject>Reference rates</Subject> 
     <OrigCurrency>RON</OrigCurrency> 
     <Cube date="2017-01-18"> 
      <Rate currency="AED">1.1462</Rate> 
      <Rate currency="AUD">3.1789</Rate> 
      <Rate currency="BGN">2.2998</Rate> 
      <Rate currency="BRL">1.3109</Rate> 
      <Rate currency="CAD">3.2177</Rate> 
      <Rate currency="CHF">4.1982</Rate> 
      <Rate currency="CNY">0.6156</Rate> 
      <Rate currency="CZK">0.1665</Rate> 
      <Rate currency="DKK">0.6049</Rate> 
      <Rate currency="EGP">0.2230</Rate> 
      <Rate currency="EUR">4.4980</Rate> 
      <Rate currency="GBP">5.1802</Rate> 
      <Rate currency="HRK">0.5971</Rate> 
      <Rate currency="HUF" multiplier="100">1.4598</Rate> 
      <Rate currency="INR">0.0619</Rate> 
      <Rate currency="JPY" multiplier="100">3.7123</Rate> 
      <Rate currency="KRW" multiplier="100">0.3598</Rate> 
      <Rate currency="MDL">0.2084</Rate> 
      <Rate currency="MXN">0.1943</Rate> 
      <Rate currency="NOK">0.4976</Rate> 
      <Rate currency="NZD">3.0325</Rate> 
      <Rate currency="PLN">1.0276</Rate> 
      <Rate currency="RSD">0.0363</Rate> 
      <Rate currency="RUB">0.0711</Rate> 
      <Rate currency="SEK">0.4721</Rate> 
      <Rate currency="TRY">1.1122</Rate> 
      <Rate currency="UAH">0.1531</Rate> 
      <Rate currency="USD">4.2098</Rate> 
      <Rate currency="XAU">164.0436</Rate> 
      <Rate currency="XDR">5.7050</Rate> 
      <Rate currency="ZAR">0.3098</Rate> 
     </Cube> 
    </Body> 
</DataSet> 

目前我使用此代碼來獲取貨幣代碼(AED,AUD,BGN等) ,(HUF,JPY,KRW等)的乘數值,但我無法獲得匯率。

function GetXMLData() { 
    var url = 'http://www.bnr.ro/nbrfxrates.xml'; 

    var response = nlapiRequestURL(url); 
    var responseXML = nlapiStringToXML(response.getBody()); 
    var resData = nlapiSelectNodes(responseXML, "/*[local-name()='DataSet'][namespace-uri()='http://www.bnr.ro/xsd']/*[local-name()='Body'][namespace-uri()='http://www.bnr.ro/xsd']/*[local-name()='Cube'][namespace-uri()='http://www.bnr.ro/xsd']/*[local-name()='Rate'][namespace-uri()='http://www.bnr.ro/xsd']"); 

    resData.forEach(function(entry) { 
     var currencyCode = nlapiSelectValue(entry, '@currency'); 
     var currencyRate = nlapiSelectNode(entry, "text()"); 
     var currencyMultiplier = nlapiSelectValue(entry, '@multiplier'); 
     alert(currencyCode + ' ' + currencyRate + ' ' + currencyMultiplier); 
    }); 


} 

結果我在調試器中得到:

warning ZAR [#text: 0.3098] null 18/1/2017 23:52:47.416 
warning XDR [#text: 5.7050] null 18/1/2017 23:52:47.416 
warning XAU [#text: 164.0436] null 18/1/2017 23:52:47.416 
warning USD [#text: 4.2098] null 18/1/2017 23:52:47.416 
warning UAH [#text: 0.1531] null 18/1/2017 23:52:47.416 
warning TRY [#text: 1.1122] null 18/1/2017 23:52:47.416 
warning SEK [#text: 0.4721] null 18/1/2017 23:52:47.416 
warning RUB [#text: 0.0711] null 18/1/2017 23:52:47.416 
warning RSD [#text: 0.0363] null 18/1/2017 23:52:47.416 
warning PLN [#text: 1.0276] null 18/1/2017 23:52:47.416 
warning NZD [#text: 3.0325] null 18/1/2017 23:52:47.416 
warning NOK [#text: 0.4976] null 18/1/2017 23:52:47.416 
warning MXN [#text: 0.1943] null 18/1/2017 23:52:47.416 
warning MDL [#text: 0.2084] null 18/1/2017 23:52:47.416 
warning KRW [#text: 0.3598] 100 18/1/2017 23:52:47.416 
warning JPY [#text: 3.7123] 100 18/1/2017 23:52:47.416 
warning INR [#text: 0.0619] null 18/1/2017 23:52:47.416 
warning HUF [#text: 1.4598] 100 18/1/2017 23:52:47.416 
warning HRK [#text: 0.5971] null 18/1/2017 23:52:47.416 
warning GBP [#text: 5.1802] null 18/1/2017 23:52:47.416 
warning EUR [#text: 4.4980] null 18/1/2017 23:52:47.416 
warning EGP [#text: 0.2230] null 18/1/2017 23:52:47.416 
warning DKK [#text: 0.6049] null 18/1/2017 23:52:47.416 
warning CZK [#text: 0.1665] null 18/1/2017 23:52:47.416 
warning CNY [#text: 0.6156] null 18/1/2017 23:52:47.416 
warning CHF [#text: 4.1982] null 18/1/2017 23:52:47.416 
warning CAD [#text: 3.2177] null 18/1/2017 23:52:47.416 
warning BRL [#text: 1.3109] null 18/1/2017 23:52:47.416 
warning BGN [#text: 2.2998] null 18/1/2017 23:52:47.416 
warning AUD [#text: 3.1789] null 18/1/2017 23:52:47.416 
warning AED [#text: 1.1462] null 18/1/2017 23:52:47.415 

這裏的「入口」對象看起來像在調試器: entry object in the debugger

我怎樣才能得到每種貨幣的比率沒有[#text:...],以及爲什麼文本值是這種格式。

+0

我不知道suitecript,但我知道XML和XPath。這是一個瘋狂的複雜的XPath聲明,不//率工作? RE:利率,我會嘗試更換var currencyRate = nlapiSelectNode(條目,「文本()」); var currencyRate = nlapiSelectValue(entry,「text()」); –

+0

我試過了,它返回null :( – eXtreme

回答

0

明白了,我換成

var currencyRate = nlapiSelectNode(entry, "text()"); 

var currencyRate = nlapiSelectNode(entry, "text()").textContent;