E4X-sättet att arbeta med XMLFlash Player 9 och senare, Adobe AIR 1.0 och senare I specifikationen ECMAScript för XML definieras en uppsättning klasser och funktioner för att arbeta med XML-data. Dessa klasser och funktioner kallas gemensamt för E4X. I ActionScript 3.0 finns följande E4X-klasser: XML, XMLList, QName och Namespace. Metoderna, egenskaperna och operatorerna i klasserna E4X har skapats med tanke på följande:
Obs! Det finns en annan XML-klass i ActionScript 2.0. I ActionScript 3.0 har den klassen ändrat namn till XMLDocument så att den inte kommer i konflikt med XML-klassen i ActionScript 3.0 som är en del av E4X. I ActionScript 3.0 ingår de gamla klasserna – XMLDocument, XMLNode, XMLParser och XMLTag – i flash.xml-paketet för att produkten ska vara bakåtkompatibel. De nya E4X-klasserna är huvudklasser så du behöver inte importera ett paket för att använda dem. Information om de äldre XML-klasserna i ActionScript 2.0 finns i flash.xml package i Referenshandbok för ActionScript 3.0 i Adobe Flash-plattformen.
Här följer ett exempel på hur du använder E4X för att hantera data: var myXML:XML = <order> <item id='1'> <menuName>burger</menuName> <price>3.95</price> </item> <item id='2'> <menuName>fries</menuName> <price>1.45</price> </item> </order> Det är vanligt att programmet hämtar XML-data från en extern källa, t.ex. en webbtjänst eller en RSS-matning. Men i de kodexempel som anges här tilldelas XML-data som litteraler. Som framgår av följande exempel innehåller E4X vissa intuitiva operatorer, som punktoperatorn (.) och attributidentifieraroperatorn (@), för att få åtkomst till egenskaper och attribut i XML: trace(myXML.item[0].menuName); // Output: burger trace(myXML.item.(@id==2).menuName); // Output: fries trace(myXML.item.(menuName=="burger").price); // Output: 3.95 Använd metoden appendChild() för att tilldela en ny underordnad nod till XML enligt kodutdraget nedan: var newItem:XML = <item id="3"> <menuName>medium cola</menuName> <price>1.25</price> </item> myXML.appendChild(newItem); Använd operatorerna @ och . inte bara för att läsa data utan också för att tilldela data enligt följande exempel: myXML.item[0].menuName="regular burger"; myXML.item[1].menuName="small fries"; myXML.item[2].menuName="medium cola"; myXML.item.(menuName=="regular burger").@quantity = "2"; myXML.item.(menuName=="small fries").@quantity = "2"; myXML.item.(menuName=="medium cola").@quantity = "2"; Använd en for-slinga för att iterera igenom XML-noder som i följande exempel: var total:Number = 0; for each (var property:XML in myXML.item) { var q:int = Number(property.@quantity); var p:Number = Number(property.price); var itemTotal:Number = q * p; total += itemTotal; trace(q + " " + property.menuName + " $" + itemTotal.toFixed(2)) } trace("Total: $", total.toFixed(2)); |
|