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

Flex XML标记属性值/属性解析,xml,parsing,apache-flex,Xml,Parsing,Apache Flex,我会尽量用一种有意义的方式问这个问题 我有一个RSS提要,在Flex中,我通过HTTPService连接到提要,XML结构如下(不确切,但出于提问的目的)。我能够遍历xml并成功访问title和link节点中的数据,但是当我获得description节点并尝试访问其中的img和src属性时,我没有获得任何成功。阅读有关e4x解析的内容,我得到的示例是: var xList:XMLList = xData.channel.item.description.(attribute("src"));

我会尽量用一种有意义的方式问这个问题

我有一个RSS提要,在Flex中,我通过HTTPService连接到提要,XML结构如下(不确切,但出于提问的目的)。我能够遍历xml并成功访问title和link节点中的数据,但是当我获得description节点并尝试访问其中的img和src属性时,我没有获得任何成功。阅读有关e4x解析的内容,我得到的示例是:

var xList:XMLList = xData.channel.item.description.(attribute("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>

someText
someText
someText
|]>


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

var descXml:XML = new XML(xData.channel.item.description.toString());
trace(descXml..@src);
然而,我现在看到描述中的html内容是无效的,我想这就是为什么CDATA首先被抛出的原因。如果您无法控制该内容(关闭img和br标记),可以尝试使用一个小正则表达式刮取src属性

<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"/>
var descXml:XML = new XML(xData.channel.item.description.toString());
trace(descXml..@src);