Flex XML标记属性值/属性解析

时间:2010-09-24 09:24:03

标签: xml parsing flex

我会尝试以一种有道理的方式提出这个问题。

我有一个RSS提要,在Flex中我通过HTTPService连接到提要,XML结构如下(不完全,但出于问题的目的)。我能够走下xml并成功访问标题和链接节点中的数据,但是当我获得描述节点并尝试访问其中的img和src属性时,我没有取得任何成功。阅读有关使用e4x进行解析的示例我得到的是:

var xList:XMLList = xData.channel.item.description.(attribute("src"));

var xList:XMLList = xData.channel.item.description.(@src);

我在这一点上迷路了,不知道我从哪里离开,并且在这一点上会欣赏一些方向。

<rss>
<channel>
    <item>
        <title><![CDATA[some text]]></title>
        <link><![CDATA[a link]]></link>
        <description><![CDATA[<table border="0" cellpadding="8"><tr><td width="80px"><a href="http://anAddress"><img border="0" src="http://anAddress.jpg"></a></td><td><strong>someText</strong><br>someText<br>someText<br><a href="http://anAddress">someText</a> | <a href="http://anAddress">someText</a></td></tr></table>]]></description>
    </item>
</channel>

<fx:Script>
    <![CDATA[

        [Bindable]
        private var xData:XML;

        import mx.events.FlexEvent;
        import mx.rpc.events.ResultEvent;

        protected function appCompleteHandler(event:FlexEvent):void{
            myService.send();
        }

        private function getList():void{
            var xList:XMLList = xData.channel.item.description;
            output.text = xList.toString();
        }

        private function rssResult(event:ResultEvent):void{
            xData = event.result as XML;
        }

    ]]>
</fx:Script>

    <s:controlBarContent>
    <s:Button label="Get List" click="getList()"/>
    <s:Button label="Change Data"/>
</s:controlBarContent>
<s:TextArea id="output" width="100%" height="100%"
    text="{xData.toString()}" fontSize="16"/>

1 个答案:

答案 0 :(得分:0)

它看起来像是描述节点中的CDATA。 CDATA中包含的任何内容都不会被解析,只会被视为文本。如果您可以控制数据,则可以尝试删除CDATA标记。否则,您可以再次重新解析描述文本,例如:

var descXml:XML = new XML(xData.channel.item.description.toString());
trace(descXml..@src);

但是,我现在看到描述中的html内容无效,我想这就是为什么CDATA首先被抛入其中的原因。如果您无法控制该内容(关闭img和br标签),您可以尝试使用一点regex来搜索src属性。