Как структурировать синтаксис E4X для обработки атрибутов?

Я использую веб-службу XML weather.com, чтобы получить прогноз высокой и низкой температуры и значок. Фрагмент 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

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

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

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


person SidC    schedule 13.05.2011    source источник


Ответы (1)


Имя атрибута - '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
person Patrick    schedule 13.05.2011