Flash / Flex / ActionScript/XML/at

Материал из Web эксперт
Перейти к: навигация, поиск

Deleting Elements and Attributes: To remove an element or attribute from a document, use the delete operator as follows: delete elementOrAttribute

   <source lang="java">

package{

 import flash.display.Sprite;
 
 public class Main extends Sprite{
   public function Main(){
       var novel:XML = <BOOK ISBN="0000000000">
           <TITLE>ActionScript</TITLE>
           <AUTHOR>J, J</AUTHOR>
           <PUBLISHER>Books Ltd</PUBLISHER>
         </BOOK>;
       
       trace(novel);
       delete novel.@ISBN;
       trace(novel);
       
   }
 }

}

       </source>
   
  


@ operator has the attribute() and attributes() methods for accessing attributes by name or as an XML list respectively.

   <source lang="java">

package{

 import flash.display.Sprite;
 
 public class Main extends Sprite{
   public function Main(){
       var movieList:XML = <movieList>
                               <listName>My favorite movies</listName>
                               <movie id="123">
                                   <title>Titus</title>
                                   <year>1999</year>
                                   <director>J T</director>
                               </movie>
                               <movie id="456">
                                   <title>Rushmore</title>
                                   <year>1998</year>
                                   <director>W A</director>
                               </movie>
                               <movie id="789">
                                   <title>Hall</title>
                                   <year>1977</year>
                                   <director>Woody Allen</director>
                               </movie>
                          </movieList>;
       
       movieList.movie[1].attribute("id"); // 456
       movieList.movie[2].attributes(); // 789
       //The preceding code is functionally identical to the following code:
       movieList.movie[1].@id; // 456
       movieList.movie[2].@*; // 789
   }
 }

}

       </source>
   
  


Reference third level tag value

   <source lang="java">

package{

 import flash.display.Sprite;
 
 public class Main extends Sprite{
   public function Main(){
       var fruits:XML = <fruits>
                          <fruit color="red">
                            <name>Apple</name>
                          </fruit>
                          <fruit color="orange">
                            <name>Orange</name>
                          </fruit>
                          <fruit color="green">
                            <name>Pear</name>
                          </fruit>
                          <fruit color="red">
                            <name>Watermelon</name>
                          </fruit>
                        </fruits>;
                        
       trace( fruits.fruit.(name == "Apple").@color );
   }
 }

}

       </source>
   
  


To access all of the attributes for a tag, you can use an asterisk

   <source lang="java">

package{

 import flash.display.Sprite;
 
 public class Main extends Sprite{
   public function Main(){
       var myXML:XML = <foo a="1" b="2" c="3" />;
       trace(myXML.@*.toXMLString()); 
   }
 }

}

       </source>
   
  


Use a wildcard (*) with the @ operator to access all attributes of an element

   <source lang="java">

package{

 import flash.display.Sprite;
 
 public class Main extends Sprite{
   public function Main(){
       var fruit:XML = <fruit name="Apple" color="red" />;
       
       trace( fruit.@*[0] );
       
       trace( fruit.@*[1] );
       
       trace( fruit.@*.length(  ) );
   }
 }

}

       </source>
   
  


Use bracket to access an attribute by name, or when the attribute name contains characters not allowed in variable names

   <source lang="java">

package{

 import flash.display.Sprite;
 
 public class Main extends Sprite{
   public function Main(){
       var example:XML = <example bad-variable-name="yes" color12="blue" />;
       var num:Number = 12;
       
       trace( example.@["bad-variable-name"] );
       
       trace( example.@["color" + num] );
   }
 }

}

       </source>
   
  


Use E4X to dot down to the particular element node, and then use the @ operator followed by the attribute"s name to access its value

   <source lang="java">

package{

 import flash.display.Sprite;
 
 public class Main extends Sprite{
   public function Main(){
       var fruit:XML = <fruit name="Apple" color="red" />;
       
       trace( fruit.@color );
   }
 }

}

       </source>
   
  


Use E4X to total the prices of all of the elements with a price attribute

   <source lang="java">

package{

 import flash.display.Sprite;
 
 public class Main extends Sprite{
   public function Main(){
       var cart:XML = <cart>
                         <item price=".98">crayons</item>
                         <item price="3.29">pencils</item>
                         <group>
                           <item price=".48">blue pen</item>
                           <item price=".48">black pen</item>
                         </group>
                       </cart>;
       
       var total:Number = 0;
       
       for each ( var price:XML in cart..@price ) {
         total += price;    
       }
       
       trace( total );
   }
 }

}

       </source>