如何构建E4X语法来处理属性?

时间:2011-05-13 17:52:32

标签: actionscript-3 e4x

我使用weather.com XML Web服务来获取预测的高温,低温和图标。 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 个答案:

答案 0 :(得分: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