Подход E4X к обработке XMLFlash Player 9 и более поздних версий, Adobe AIR 1.0 и более поздних версий Спецификация ECMAScript для XML определяет набор классов и функций для работы с XML-данными. Эти классы и функции известны под общим названием E4X. ActionScript 3.0 включает следующие классы E4X: XML, XMLList, QName и Namespace. Методы, свойства и операторы классов E4X разработаны для следующих целей.
Примечание. В ActionScript 2.0. существует другой класс XML. В ActionScript 3.0 этот класс получил новое имя XMLDocument, чтобы избежать конфликта с классом XML ActionScript 3.0, являющимся частью E4X. В ActionScript 3.0 унаследованные классы XMLDocument, XMLNode, XMLParser и XMLTag включены в пакет flash.xml прежде всего с целью поддержки. Новые классы E4X являются основными классами, и нет необходимости в импорте пакета, чтобы можно было ими пользоваться. Сведения о старых классах XML в ActionScript 2.0 см. в описании пакета flash.xml в cправочнике ActionScript® 3.0 для платформы Adobe® Flash® Platform.
Далее приведен пример манипуляции данными с помощью 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> Приложение часто загружает XML-данные из внешнего источника, такого как веб-служба или RSS-канал. Однако для ясности в приведенных здесь примерах кода данные XML назначаются в качестве литералов. Как показывает следующий код, E4X включает несколько интуитивно понятных операторов, таких как «точка» (.), и операторов идентификатора атрибута (@) для получения доступа к свойствам и атрибутам в 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 Метод appendChild() используется с целью назначения нового дочернего узла для XML, как это показано в следующем фрагменте: var newItem:XML = <item id="3"> <menuName>medium cola</menuName> <price>1.25</price> </item> myXML.appendChild(newItem); Операторы @ и . используются не только для чтения данных, но и для назначения данных, как это показано в примере ниже: 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"; Цикл for используется для осуществления повторений через узлы XML, как показано ниже: 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)); |
|