Как структурировать синтаксис E4X для обработки атрибутов? - PullRequest
0 голосов
/ 13 мая 2011

Я использую веб-сервис weather.com XML для получения прогноза высокой температуры, низкой температуры и значка. Фрагмент XML выглядит следующим образом:

<dayf>
<lsup>5/14/11 2:21 AM Local Time</lsup> 
<day d="0" t="Saturday" dt="May 14">
<hi>63</hi> 
<low>48</low> 
<sunr>6:39 AM</sunr> 
<suns>5:04 PM</suns> 
<part p="d">
<icon>32</icon> 

Я пытаюсь отследить вышеупомянутые узлы и атрибуты, используя следующий фрагмент скрипта:

XML.ignoreWhitespace = true;
var urlLoader:URLLoader = event.currentTarget as URLLoader;
var resultXML:XML = XML(urlLoader.data);
trace(resultXML.dayf.day.hi);
trace(resultXML.dayf.day.low);
trace(resultXML.dayf.day.part.attribute("p=d").icon);

lbllowtemp.text= String(resultXML.dayf.day.low);
lblhitemp.text=String(resultXML.dayf.day.hi);
uicondicon.source=String(resultXML.dayf.day.part.attribute("p=d").icon)+".png";

Однако, когда я запускаю этот скрипт в моем приложении Flash, я получаю:

Error #2044: Unhandled ioError:. text=Error #2035: URL Not Found. URL: file:///C|/Documents/WeatherFLV/.png

Итак, значения hi и low читаются, но значение значка в части узла с атрибутом p = d не работает.

Как мне изменить мой синтаксис E4X, чтобы получить значок узла?

Большое спасибо!

1 Ответ

1 голос
/ 13 мая 2011

Имя атрибута 'p', а не 'p=d', а значение атрибута p равно "d". Таким образом, вы хотите найти значок узла в теге <part> с атрибутом p, который имеет значение "d".

.(xxxxx) отфильтрует ваш XML с заданным условием, здесь @p является атрибутом

если у вас есть только одна деталь с таким значением, вы можете сделать:

resultXML.dayf.day.part.(@p=="d").icon

в противном случае, если у вас есть несколько значений, вы можете получить первую запись:

resultXML.dayf.day.part.(@p=="d")[0].icon
...