我正在使用weather.com网络服务来请求某个位置的当前条件,并且正在解析当前温度,感觉就像我的Flash应用程序中的临时和当前条件图标。当前温度和感觉像温度节点嵌套在NowItems中 - > NowItem而WeatherToday在Feed中更进一步。我在AS3中写了以下内容:
public class Main extends MovieClip
{
public function Main()
{
var urlRequest:URLRequest = new URLRequest("WebServiceURL");
var urlLoader:URLLoader=new URLLoader();
urlLoader.addEventListener(Event.COMPLETE, onXmlLoaded);
urlLoader.load(urlRequest);
}
private function onXmlLoaded(event:Event):void
{
XML.ignoreWhitespace = true;
var urlLoader:URLLoader = event.currentTarget as URLLoader;
var resultXML:XML = XML(urlLoader.data);
trace(resultXML.NowItems.NowItem.CURRENT TEMPERATURE.Value);
trace(resultXML.NowItems.NowItem.FEELS LIKE.Value);
trace(resultXML.WeatherToday.Icon);
var lowtemp_label :TextField = new TextField();
addChild(lowtemp_label);
var hitemp_label :TextField=new TextField();
addChild(hitemp_label);
var condicon_label :TextField=new TextField();
addChild(condicon_label);
lowtemp_label.text = resultXML.minTemp;
hitemp_label.text= resultXML.maxTemp;
condicon_label.text=resultXML.icon;
}
}
以下是一些XML:
<rss version="2.0" xmlns:a10="http://www.w3.org/2005/Atom">
<channel>
<title>WEATHERSCAPE</title>
<link>http://www.weatherchannel.com.au/</link>
<description>WEATHERSCAPE DATA</description>
<category>Weather</category>
<item>
<guid isPermaLink="false">18b88e0b-b53f-41a3-bdfb-0762ae440f60</guid>
<link>http://www.weatherchannel.com.au/</link>
<title>Weather</title>
<description><?xml version="1.0" encoding="utf-16"?>
<LocalWeather xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<AreaType>suburb</AreaType>
<AreaId>555</AreaId>
<AreaName>SYDNEY</AreaName>
<UTCOffset>600</UTCOffset>
<ForecastCreated>2011-04-29T17:10:25Z</ForecastCreated>
<ObservationsCreated>2011-04-29T17:00:00Z</ObservationsCreated>
<NowItems>
<NowItem>
<Label>CURRENT TEMPERATURE</Label>
<Value>16.7</Value>
<Units>°C</Units>
<Change>STEADY</Change>
</NowItem>
<NowItem>
<Label>FEELS LIKE</Label>
<Value>16.9</Value>
<Units>°C</Units>
<Change>STEADY</Change>
</NowItem>
<NowItem>
<Label>DEW POINT</Label>
<Value>16</Value>
<Units>°C</Units>
<Change>DOWN</Change>
</NowItem>
<NowItem>
<Label>HUMIDITY</Label>
<Value>96</Value>
<Units>%</Units>
</NowItem>
<NowItem>
<Label>WIND SPEED</Label>
<Value>9</Value>
<Units>km/h</Units>
<Change>STEADY</Change>
<Direction>SW</Direction>
</NowItem>
<NowItem>
<Label>WIND GUSTS</Label>
<Value>15</Value>
<Units>km/h</Units>
</NowItem>
<NowItem>
<Label>PRESSURE</Label>
<Value>1022</Value>
<Units>hPa</Units>
<Change>STEADY</Change>
</NowItem>
<NowItem>
<Label>RAIN SINCE 9AM</Label>
<Value>9</Value>
<Units>mm</Units>
<Change>N/A</Change>
</NowItem>
<NowItem>
<Label>FIRE DANGER LEVEL</Label>
<Value>UNAVAILABLE</Value>
<Units>N/A</Units>
</NowItem>
</NowItems>
<WMOID>94768</WMOID>
<SiteId>66062</SiteId>
<WeatherStation>SYDNEY</WeatherStation>
<WeatherToday>
<Icon>Fewshowers</Icon>
<FriendlyName>Few showers</FriendlyName>
<Precis>Few showers.</Precis>
<MaxTemp>22</MaxTemp>
<MinTemp>17</MinTemp>
<Units>°C</Units>
<MorningIcon>Showers</MorningIcon>
<AfternoonIcon>Fewshowers</AfternoonIcon>
<EveningIcon>Showers</EveningIcon>
<MorningPrecis>Showers</MorningPrecis>
<AfternoonPrecis>Few showers</AfternoonPrecis>
<EveningPrecis>Showers</EveningPrecis>
</WeatherToday>
我在请求当前温度和感觉像的行上遇到编译器错误,因为它们中有空格?我们使用什么语法来引用这些节点,因为它们有空格?这是引用这些节点的正确方法,还是有更简单的方法?当我在标签文本中引用节点(最后3行)时,我是否在跟踪语句中使用完全限定节点?
非常感谢!!
答案 0 :(得分:2)
描述节点内部是一个不是XML的XML STRING
你需要得到描述节点然后将其转换为xml来解析它
[编辑]
好的,你的示例中的内容基本上是2个XML文件,一个在另一个内
因此,我们需要做的是解析描述节点,您可以从HERE了解如何执行此操作,HERE是装载机的一个很好的示例
一旦你成功获得了描述节点的内容,你现在必须取消数据,因为它已被转换为html友好格式。(非常确定unescape函数将处理这个,如果不在这里发布另一个问题关于如何转换它 - 抱歉现在没时间测试)
例如:
&amp; lt应该转换为&lt;
转换字符串后,您将创建一个新的XML:object,然后在解析服务器响应时访问您想要的节点。