2017-01-18 2 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, не работает/rate? RE: Ставки, я бы попытался заменить var currencyRate = nlapiSelectNode (запись, "текст()"); с var currencyRate = nlapiSelectValue (запись, "текст()"); –

+0

Я пробовал это, он возвращает null :( – eXtreme

ответ

0

Понял, я заменил

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

с

var currencyRate = nlapiSelectNode(entry, "text()").textContent; 
Смежные вопросы