JavaScript: не удается получить значение @var из XML-файла, потому что var зарезервирован?

Я пытаюсь получить данные о погоде из openweathermap-webservice. Среди данных есть и iconCode, чтобы визуализировать текущие погодные условия. Вот xml-ответ на данный запрос:

запрос:

http://api.openweathermap.org/data/2.5/forecast?q=linz&units=metric&type=accurate&mode=xml&APPID=ef67184baece136977466e7894b2a614

часть ответа: (я немного сократила)

<weatherdata>
<location>...</location>
<credit/>
<meta>...</meta>
<sun rise="2017-05-30T03:07:24" set="2017-05-30T18:54:07"/>
<forecast>
  <time from="2017-05-30T09:00:00" to="2017-05-30T12:00:00">
   <symbol number="800" name="clear sky" var="02d"/>
   <precipitation/>
   <windDirection deg="223" code="SW" name="Southwest"/>
   <windSpeed mps="2.31" name="Light breeze"/>
   <temperature unit="celsius" value="29.59" min="27.52" max="29.59"/>
  </time>
  <time from="2017-05-30T12:00:00" to="2017-05-30T15:00:00">
   <symbol number="800" name="clear sky" var="01d"/>
   <precipitation/>
   <windDirection deg="227.001" code="SW" name="Southwest"/>
  </time>

Я хочу получить все iconCodes всех дней прогноза. (И он отлично работает с температурой, направлением ветра и т.д....

часть функции, которая должна получать данные от веб-сервиса:

for each (var item in xmlPage.forecast.time) {
var row = new Object();
var [email protected](0,10);

if(from_current_value!=from_today_value){
    row.WindDirection = item.windDirection.@name;
    row.WindSpeed=item.windSpeed.@mps;
    row.WeatherTemp=parseFloat(item.temperature.@value);
    row.WeatherHumidity=parseFloat(item.humidity.@value);
    row.From=item.@from;
    row.To=item.@to;
    row.Title=xmlPage.location.name+" "+xmlPage.location.country;
    row.Precipitation=(item.precipitation.@type+" "+item.precipitation.@value)==" "?"No Precipitation":item.precipitation.@type;

    var iconCode = item.symbol.@var;
    row.IconLink = "http://openweathermap.org/img/w/"+ iconCode +".png";

Если я добавил строку var iconCode = item.symbol.@var, я получаю следующую синтаксическую ошибку:

syntax check failed: missing name after .@ (Line#33)

(строка 33 — это строка «var iconCode = item.symbol.@var»)

Я думаю, что получаю сообщение об ошибке, потому что «var» — это зарезервированная строка в JavaScript. Но как мне тогда получить iconCode из xmlPage? Какие-либо предложения?

Заранее большое спасибо за помощь! С уважением, Тереза


person user7335295    schedule 30.05.2017    source источник
comment
Не могли бы вы попробовать вместо этого item.symbol['@var']?   -  person Pyromonk    schedule 30.05.2017
comment
Ну, разве вы не можете использовать .getAttribute(), как мы, для всех элементов DOM? w3schools.com/xml/met_element_getattribute.asp   -  person inubs    schedule 30.05.2017


Ответы (1)


Согласно их документации, вы должны использовать:

прогноз.символ.вар

(в вашем случае item.symbol.var)

Кроме того, использование JSON может быть проще?

person Wexoni    schedule 30.05.2017