Flash / Flex / ActionScript/XML/XMLList

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

Assigning Values to an XMLList

 
package{
  import flash.display.Sprite;
  
  public class Main extends Sprite{
    public function Main(){
        var doc:XML = <DOC TOPIC="Code Tips" AUTHOR="Colin">
            <P>Errors are your friends</P>
            <P>Backup often</P>
          </DOC>;
        
        doc.* = <P>Practice coding everyday</P>;
        trace(doc.*);
    }
  }
}



Converting XMLList to a String: toString( ) had been invoked on the single XML instance directly:

 

package{
  import flash.display.Sprite;
  
  public class Main extends Sprite{
    public function Main(){
        var novel:XML = <BOOK ISBN="0141182806">
            <TITLE>Actionscript</TITLE>
            <AUTHOR>J, K</AUTHOR>
            <PUBLISHER>Penguin Books Ltd</PUBLISHER>
          </BOOK>
        var title:XMLList = novel.TITLE;
        trace(title);  // Displays: Actionscript
        
        var details:XMLList = novel.*;
        
        trace(details);
    }
  }
}



To access a specific child in an XMLList

 
package{
  import flash.display.Sprite;
  
  public class Main extends Sprite{
    public function Main(){
        var rootElementName:String = "BOOK";
        var rootAttributeName:String = "ISBN";
        var childElementNames:Array = ["TITLE", "AUTHOR", "PUBLISHER"];
        var bookISBN:String = "0000000000";
        var bookTitle:String = "ActionScript";
        var bookAuthor:String = "J, J";
        var bookPublisher:String = "Books Ltd";
        var novel:XML = <{rootElementName} {rootAttributeName}={bookISBN}>
            <{childElementNames[0]}>{bookTitle}</{childElementNames[0]}>
            <{childElementNames[1]}>{bookAuthor}</{childElementNames[1]}>
            <{childElementNames[2]}>{bookPublisher}</{childElementNames[2]}>
          </{rootElementName}>;
        
        trace(novel.children(  )[1]);  // A reference to <BOOK>"s second child node
        //or:
        trace(novel.*[1]);  // Also a reference to <BOOK>"s second child node

    }
  }
}



To access the XMLList representing child nodes, use the XML class"s instance method children( ).

 
package{
  import flash.display.Sprite;
  
  public class Main extends Sprite{
    public function Main(){
        var rootElementName:String = "BOOK";
        var rootAttributeName:String = "ISBN";
        var childElementNames:Array = ["TITLE", "AUTHOR", "PUBLISHER"];
        var bookISBN:String = "0000000000";
        var bookTitle:String = "ActionScript";
        var bookAuthor:String = "J, J";
        var bookPublisher:String = "Books Ltd";
        var novel:XML = <{rootElementName} {rootAttributeName}={bookISBN}>
            <{childElementNames[0]}>{bookTitle}</{childElementNames[0]}>
            <{childElementNames[1]}>{bookAuthor}</{childElementNames[1]}>
            <{childElementNames[2]}>{bookPublisher}</{childElementNames[2]}>
          </{rootElementName}>;
        trace(novel.*);
    }
  }
}



To replace an XML element with new elements, we assign either an XMLList or XML object to that element

 
package{
  import flash.display.Sprite;
  
  public class Main extends Sprite{
    public function Main(){
        var doc:XML = <DOC>
            <P ALIGN="CENTER">E4X is fun</P>
          </DOC>;
        doc.P = <DIV>E4X is convenient</DIV>;
        
        trace(doc.P);
    }
  }
}



Treating XMLList as XML

 
package{
  import flash.display.Sprite;
  
  public class Main extends Sprite{
    public function Main(){
        var oopBook:XML = <BOOK ISBN="000000000">
          <TITLE>Design Patterns</TITLE>
          <AUTHOR>
            <NAME>Bates</NAME>
            <BIRTHDATE>1 1973</BIRTHDATE>
          </AUTHOR>
          <PUBLISHER>Inc</PUBLISHER>
        </BOOK>;
        
        displayAuthor(oopBook.children());
    }
    public function displayAuthor (authors:XMLList):void {
      for each (var author:XML in authors) {
        trace( "Name: " + author.NAME
                       + ", Birthdate: " + author.BIRTHDATE + "\n");
      }
    }
  }
}