2015-07-21 31 views
0

是否可以在Actionscript 3中的XML節點查詢中使用變量?Actionscript3用變量分析XML節點路徑

鑑於以下RSS饋送結構:

<?xml version="1.0" encoding="UTF-8"?> 
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0"> 
<channel> 
    <item> 
    <media:content url="http://www.example.com/test.jpg" type="image/jpeg" height="683" width="1024" /> 
    <media:content url="http://www.example.com/test2.jpg" type="image/jpeg" height="683" width="1024" /> 
    </item> 
</channel> 
</rss> 

下面的代碼按預期工作,爲媒體命名空間中的第一個內容節點顯示url屬性值:

var nsAttribute:String = 'media'; 
var nodeName:String = 'content'; 
var holder:String = 'item'; 
var imagePathAttribute = 'url'; 
// Pull the namespace attribute value from the xml declaration 
var ns:String = rssXML.namespace(nsAttribute); 
// Make a namespace instance based on the xpl namespace's URI 
var imagePathNameSpace:Namespace = new Namespace(ns); 

trace (rssXML.channel.child(holder).imagePathNameSpace::content[0][email protected]); 

返回預期結果:

http://www.example.com/test.jpg 

但是,當我使用變量路徑節點,我得到一個錯誤。

trace (rssXML.channel.child(holder).imagePathNameSpace::nodeName[0][email protected]); 

我收到的錯誤是:

TypeError: Error #1010: A term is undefined and has no properties. 

大概是因爲因爲路徑返回一個空字符串無法找到索引的任何值。如果我從路徑中刪除索引部分「[0]」,它將返回一個空字符串。

那麼如何在xml查詢中使用變量?我試圖這樣做的原因是爲了讓我們的工作具有足夠的可擴展性,我們需要做的就是設置類的屬性,因此它可以使用不同的rss提要類型,每個特定Feed的代碼。

感謝您提供任何幫助。

回答

0

你需要做的是一樣的東西:

var node:XML = rssXML.channel.child(holder).imagePathNameSpace::content[0]; 
trace(node.attribute(imagePathAttribute)); 

您可以直接操縱屬性和使用XML對象方法的節點名稱。使用它,你可以爲函數提供變量。

More informations are available here