A abordagem E4X em relação ao processamento de XMLFlash Player 9 e posterior, Adobe AIR 1.0 e posterior A especificação ECMAScript para XML define um conjunto de classes e recursos para trabalhar com dados XML. Em conjunto, essas classes e recursos são conhecidos como E4X. O ActionScript 3.0 inclui as seguintes classes E4X: XML, XMLList, QName e Namespace. Os métodos, as propriedades e os operadores das classes E4X foram desenvolvidos com os seguintes objetivos:
Nota: Há uma classe XML diferente no ActionScript 2.0. No ActionScript 3.0, essa classe foi renomeada como XMLDocument, de modo que não entra em conflito com a classe XML do ActionScript 3.0 que faz parte do E4X. No ActionScript 3.0, as classes herdadas (XMLDocument, XMLNode, XMLParser e XMLTag) são incluídas no pacote flash.xml principalmente para dar suporte a versões anteriores. As novas classes do E4X são classes básicas; não é necessário importar um pacote para utilizá-las. Veja os detalhes das classes antigas do ActionScript 2.0 XML em flash.xml packagena Referência do ActionScript 3.0 para a plataforma Adobe Flash.
Veja um exemplo de manipulação dos dados com E4X: 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> Normalmente, seu aplicativo carregará dados XML a partir de uma fonte externa, como um serviço da Web ou um feed RSS. No entanto, para fins de clareza, os exemplos de código fornecidos aqui atribuem dados XML como literais. Como mostra o código a seguir, o E4X inclui alguns operadores intuitivos, como os operadores de ponto (.) e de identificador de atributo (@), para acessar propriedades e atributos no 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 Use o método appendChild() para atribuir um novo nó filho ao XML, como mostra o snippet a seguir: var newItem:XML = <item id="3"> <menuName>medium cola</menuName> <price>1.25</price> </item> myXML.appendChild(newItem); Use os operadores @ e . não só para ler, mas também para atribuir dados do seguinte modo: 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"; Use um loop for para percorrer os nós do XML do seguinte modo: 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)); |
![]() |