2011-05-13 20 views
0

我使用weather.com XML Web服務來獲取預測的高溫,低溫和圖標。該XML片段如下:如何構造E4X語法來處理屬性?

<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

屬性名稱是'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 
+0

謝謝!!!有效:) – SidC 2011-05-13 18:14:30