對XML內容進行操作時,查找XML節點是很重要的一個操作。在ActionScript 3.0中,提供了兩種查找XML節點的方式:通過屬性進行查找和通過節點內容進行能夠查找。
使用屬性進行查找時,可以直接指定查找的內容的表達式。如果節點符合表達式的判斷,那麼在返回值內加入節點。具體使用方法如下代碼所示。
var flexXMLStr:String="<RIA>"
+"<FlashPlayer>"
+"<Flash version='9'>Flash CS3</Flash>"
+"<Flash version='8'>Flash 8</Flash>"
+"<Flash version='7'>Flash 2004MX</Flash>" +"<Flex>Flex3</Flex>"
+"</FlashPlayer>"
+"<Ajax>"
+"<GoogleAjax>GoogleAjax1.0</GoogleAjax>"
+"</Ajax>"
+"</RIA>";
var flexXML:XML=new XML(flexXMLStr);
trace(flexXML.FlashPlayer.Flash.(attribute('version')>7));
在上面代碼中,flexXML1.FlashPlayer.Flash.(attribute('version')>7)通過指定查找version屬性大於7的節點,並輸出。上面代碼輸出結果如下所示。
<Flash version="9">Flash CS3</Flash>
<Flash version="8">Flash 8</Flash>
在進行查找時可以使用“==”、“>”、“<”、“>=”和“<=”等操作符進行對屬性的判斷。XML中,還提供一個hasOwnProperty判斷節點中是否存在查找使用屬性。查找表達式支持多條件布爾運算。使用方式如下代碼所示。
var flexXMLStr:String="<RIA>"
+"<FlashPlayer>"
+"<Flash version='9'>Flash CS3</Flash>"
+"<Flash version='8' company=’adobe’>Flash 8</Flash>"
+"<Flash version='7' company=’macromeida’>Flash 2004MX</Flash>" +"<Flex>Flex3</Flex>"
+"</FlashPlayer>"
+"<Ajax>"
+"<GoogleAjax>GoogleAjax1.0</GoogleAjax>"
+"</Ajax>"
+"</RIA>";
var flexXML:XML=new XML(flexXMLStr);
trace(flexXML.FlashPlayer.Flash.( hasOwnProperty(“company”)&&@version>7));
//輸出結果爲<Flash version="8">Flash 8</Flash>
通過節點內容查找節點的方式與通過屬性查找節點的方式完全一致。同樣也是使用表達式的方式對節點內容進行判斷查找。具體使用方式如下代碼所示。
var flexXML:XML=
<RIA>
<FlashPlayer>
<Flash>
<Name>Flash CS3</Name><Version>9</Version>
</Flash>
<Flash>
<Name>Flash 8</Name><Version>8</Version>
</Flash>
<Flash>
<Name>Flash 2004MX</Name><Version>7</Version>
</Flash>
<Flex>Flex3</Flex>
</FlashPlayer>
</RIA>
trace(flexXML.FlashPlayer.Flash(Version>7)); //通過節點的值進行節點的查找
上面代碼輸出的結果如下所示。
<Flash>
<Name>Flash CS3</Name>
<Version>9</Version>
</Flash>
<Flash>
<Name>Flash 8</Name>
<Version>8</Version>
</Flash>