如何解析节点标签中有空格的XML节点?

时间:2011-04-29 16:45:00

标签: flash actionscript-3 e4x

我正在使用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>&lt;?xml version="1.0" encoding="utf-16"?&gt;

&lt;LocalWeather xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt;

&lt;AreaType&gt;suburb&lt;/AreaType&gt;

&lt;AreaId&gt;555&lt;/AreaId&gt;

&lt;AreaName&gt;SYDNEY&lt;/AreaName&gt;

&lt;UTCOffset&gt;600&lt;/UTCOffset&gt;

&lt;ForecastCreated&gt;2011-04-29T17:10:25Z&lt;/ForecastCreated&gt;

&lt;ObservationsCreated&gt;2011-04-29T17:00:00Z&lt;/ObservationsCreated&gt;

&lt;NowItems&gt;

&lt;NowItem&gt;

  &lt;Label&gt;CURRENT TEMPERATURE&lt;/Label&gt;

  &lt;Value&gt;16.7&lt;/Value&gt;

  &lt;Units&gt;°C&lt;/Units&gt;

  &lt;Change&gt;STEADY&lt;/Change&gt;

&lt;/NowItem&gt;

&lt;NowItem&gt;

  &lt;Label&gt;FEELS LIKE&lt;/Label&gt;

  &lt;Value&gt;16.9&lt;/Value&gt;

  &lt;Units&gt;°C&lt;/Units&gt;

  &lt;Change&gt;STEADY&lt;/Change&gt;

&lt;/NowItem&gt;

&lt;NowItem&gt;

  &lt;Label&gt;DEW POINT&lt;/Label&gt;

  &lt;Value&gt;16&lt;/Value&gt;

  &lt;Units&gt;°C&lt;/Units&gt;

  &lt;Change&gt;DOWN&lt;/Change&gt;

&lt;/NowItem&gt;

&lt;NowItem&gt;

  &lt;Label&gt;HUMIDITY&lt;/Label&gt;

  &lt;Value&gt;96&lt;/Value&gt;

  &lt;Units&gt;%&lt;/Units&gt;

&lt;/NowItem&gt;

&lt;NowItem&gt;

  &lt;Label&gt;WIND SPEED&lt;/Label&gt;

  &lt;Value&gt;9&lt;/Value&gt;

  &lt;Units&gt;km/h&lt;/Units&gt;

  &lt;Change&gt;STEADY&lt;/Change&gt;

  &lt;Direction&gt;SW&lt;/Direction&gt;

&lt;/NowItem&gt;

&lt;NowItem&gt;

  &lt;Label&gt;WIND GUSTS&lt;/Label&gt;

  &lt;Value&gt;15&lt;/Value&gt;

  &lt;Units&gt;km/h&lt;/Units&gt;

&lt;/NowItem&gt;

&lt;NowItem&gt;

  &lt;Label&gt;PRESSURE&lt;/Label&gt;

  &lt;Value&gt;1022&lt;/Value&gt;

  &lt;Units&gt;hPa&lt;/Units&gt;

  &lt;Change&gt;STEADY&lt;/Change&gt;

&lt;/NowItem&gt;

&lt;NowItem&gt;

  &lt;Label&gt;RAIN SINCE 9AM&lt;/Label&gt;

  &lt;Value&gt;9&lt;/Value&gt;

  &lt;Units&gt;mm&lt;/Units&gt;

  &lt;Change&gt;N/A&lt;/Change&gt;

&lt;/NowItem&gt;

&lt;NowItem&gt;

  &lt;Label&gt;FIRE DANGER LEVEL&lt;/Label&gt;

  &lt;Value&gt;UNAVAILABLE&lt;/Value&gt;

  &lt;Units&gt;N/A&lt;/Units&gt;

&lt;/NowItem&gt;

&lt;/NowItems&gt;

&lt;WMOID&gt;94768&lt;/WMOID&gt;

&lt;SiteId&gt;66062&lt;/SiteId&gt;

&lt;WeatherStation&gt;SYDNEY&lt;/WeatherStation&gt;
&lt;WeatherToday&gt;

&lt;Icon&gt;Fewshowers&lt;/Icon&gt;

&lt;FriendlyName&gt;Few showers&lt;/FriendlyName&gt;

&lt;Precis&gt;Few showers.&lt;/Precis&gt;

&lt;MaxTemp&gt;22&lt;/MaxTemp&gt;

&lt;MinTemp&gt;17&lt;/MinTemp&gt;

&lt;Units&gt;°C&lt;/Units&gt;

&lt;MorningIcon&gt;Showers&lt;/MorningIcon&gt;

&lt;AfternoonIcon&gt;Fewshowers&lt;/AfternoonIcon&gt;

&lt;EveningIcon&gt;Showers&lt;/EveningIcon&gt;

&lt;MorningPrecis&gt;Showers&lt;/MorningPrecis&gt;

&lt;AfternoonPrecis&gt;Few showers&lt;/AfternoonPrecis&gt;

&lt;EveningPrecis&gt;Showers&lt;/EveningPrecis&gt;

&lt;/WeatherToday&gt;

我在请求当前温度和感觉像的行上遇到编译器错误,因为它们中有空格?我们使用什么语法来引用这些节点,因为它们有空格?这是引用这些节点的正确方法,还是有更简单的方法?当我在标签文本中引用节点(最后3行)时,我是否在跟踪语句中使用完全限定节点?

非常感谢!!

1 个答案:

答案 0 :(得分:2)

描述节点内部是一个不是XML的XML STRING 你需要得到描述节点然后将其转换为xml来解析它

[编辑]
好的,你的示例中的内容基本上是2个XML文件,一个在另一个内 因此,我们需要做的是解析描述节点,您可以从HERE了解如何执行此操作,HERE是装载机的一个很好的示例

一旦你成功获得了描述节点的内容,你现在必须取消数据,因为它已被转换为html友好格式。(非常确定unescape函数将处理这个,如果不在这里发布另一个问题关于如何转换它 - 抱歉现在没时间测试)
例如:

  

&amp; lt应该转换为&lt;

转换字符串后,您将创建一个新的XML:object,然后在解析服务器响应时访问您想要的节点。