在ActionScript3.0中,以ECMAScript for XML(E4X)形式提供了原生性的XML支援功能。本篇將會介紹E4X的強大搜尋功能,首先我們必須了解XML與XMLList的差別。
XML | XMLList |
<catalog> <category name="vegetables1"> </category> <category name="vegetables2"> </category> </catalog> | <category name="vegetables1"> </category> <category name="vegetables2"> </category> |
首先查看上圖,XML具有很強的規則性,每個XML格式必須只能有一個根節點(root),但在XMLList中就沒有這個規定,它可以容許多個根節點,因此我們可以說這個XMLList的長度(length)為2。
為什麼要介紹這個呢!? 那是因為在E4X中我們所要操控的就是XMLList,當然XML格式也是一種XMLList的CASE。
首先假設我們目標xml文件如下表顯示 :
<?xml version="1.0" encoding="UTF-8"?> <catalog> <category name="vegetables"> <product name="lettuce" cost="1.95"> <unit>bag</unit> <desc>Cleaned and bagged</desc> </product> <product name="carrots" cost="2.95"> <unit>pound</unit> <desc>Baby carrots, cleaned and peeled</desc> </product> </category> <category name="fruit"> <product name="apples" cost="1.95"> <unit>each</unit> <desc>Sweet Fuji</desc> </product> <berries> <product name="raspberries" cost="3.95"> <unit>pint</unit> <desc>Firm and fresh</desc> </product> <product name="strawberries" cost="2.95"> <unit>pint</unit> <desc>Deep red and juicy</desc> </product> </berries> </category> </catalog> |
以下是一些E4X使用的例子。
一些簡單的查詢表達式 :
表達式 | 結果 |
category.product | <product name="lettuce" cost="1.95"> <unit>bag</unit> <desc>Cleaned and bagged</desc> </product> <product name="carrots" cost="2.95"> <unit>pound</unit> <desc>Baby carrots, cleaned and peeled</desc> </product> <product name="apples" cost="1.95"> <unit>each</unit> <desc>Sweet Fuji</desc> </product> |
category.berries.product | <product name="raspberries" cost="3.95"> <unit>pint</unit> <desc>Firm and fresh</desc> </product> <product name="strawberries" cost="2.95"> <unit>pint</unit> <desc>Deep red and juicy</desc> </product> |
比較複雜的查詢 :
條件搜尋,其中@表示搜尋的目標為屬性
category.berries.product.(@cost=="3.95") |
<product name="raspberries" cost="3.95"> <unit>pint</unit> <desc>Firm and fresh</desc> </product> |
條件搜尋,對子節點進行比對搜尋
category.product.(unit=="bag") |
<product name="lettuce" cost="1.95"> <unit>bag</unit> <desc>Cleaned and bagged</desc> </product> |
介紹的這些方法已經可以用在很多的場合囉!!
如果有更好的知識,請觀看的人不吝賜教 :D
沒有留言:
張貼留言