精通Flex 3.0――4.6.5 查找XML節點

  對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>

發佈了65 篇原創文章 · 獲贊 0 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章