在 Suitescript 中解析 XML 时出现问题

Issue while parsing XML in Suitescript

这是我要解析的 XML:

<?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" 对象在调试器中的样子:

如何在没有 [#text: ... ] 的情况下获取每种货币的汇率,以及为什么文本值采用这种格式。

知道了,我换了

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

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