Flash / Flex / ActionScript/XML/descendants

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

Accessing Ancestors

   <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>;
       
       var title:XMLList = movieList.movie[1].title;
       var director:XMLList = title.parent().director;
       trace(title + "directed by "+ director);
   }
 }

}

       </source>
   
  


A method form of this operator called descendants(). This function behaves the same way as the double dot:

   <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>;
       trace(movieList.descendants("year").text().toXMLString());
   }
 }

}

       </source>
   
  


Descendants matches tags with the same name on different levels.

   <source lang="java">

package{

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

}

       </source>