Flash / Flex / ActionScript/XML/descendants
Accessing Ancestors
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>;
var title:XMLList = movieList.movie[1].title;
var director:XMLList = title.parent().director;
trace(title + "directed by "+ director);
}
}
}
A method form of this operator called descendants(). This function behaves the same way as the double dot:
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>;
trace(movieList.descendants("year").text().toXMLString());
}
}
}
Descendants matches tags with the same name on different levels.
package{
import flash.display.Sprite;
public class Main extends Sprite{
public function Main(){
var foo:XML = <a>
<b>
<c>
<b>foo</b>
</c>
</b>
</a>;
trace(foo..b.toXMLString());
}
}
}