Flash / Flex / ActionScript/XML/at
Содержание
- 1 Deleting Elements and Attributes: To remove an element or attribute from a document, use the delete operator as follows: delete elementOrAttribute
- 2 @ operator has the attribute() and attributes() methods for accessing attributes by name or as an XML list respectively.
- 3 Reference third level tag value
- 4 To access all of the attributes for a tag, you can use an asterisk
- 5 Use a wildcard (*) with the @ operator to access all attributes of an element
- 6 Use bracket to access an attribute by name, or when the attribute name contains characters not allowed in variable names
- 7 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
- 8 Use E4X to total the prices of all of the elements with a price attribute
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>