我会尝试以一种有道理的方式提出这个问题。
我有一个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"/>
答案 0 :(得分:0)
它看起来像是描述节点中的CDATA。 CDATA中包含的任何内容都不会被解析,只会被视为文本。如果您可以控制数据,则可以尝试删除CDATA标记。否则,您可以再次重新解析描述文本,例如:
var descXml:XML = new XML(xData.channel.item.description.toString());
trace(descXml..@src);
但是,我现在看到描述中的html内容无效,我想这就是为什么CDATA首先被抛入其中的原因。如果您无法控制该内容(关闭img和br标签),您可以尝试使用一点regex来搜索src属性。