XML-Typumwandlung

Flash Player 9 und höher, Adobe AIR 1.0 und höher

Sie können XML-Objekte und XMLList-Objekte in String-Werte konvertieren. Ebenso können Sie Strings in XML-Objekte und XMLList-Objekte konvertieren. Beachten Sie auch, dass alle XML-Attributwerte, XML-Namen und XML-Textwerte Strings sind. In den folgenden Abschnitten werden alle diese Arten der XML-Typkonvertierung behandelt.

Konvertieren von XML- und XMLList-Objekten in Strings

Die XML- und XMLList-Klassen enthalten eine toString()-Methode und eine toXMLString()-Methode. Die toXMLString()-Methode gibt einen String zurück, der alle Tags, Attribute, Namespace-Deklarationen und Inhaltsdaten des XML-Objekts enthält. Bei XML-Objekten mit komplexem Inhalt (d. h. mit untergeordneten Elementen) bewirkt die toString()-Methode genau dasselbe wie die toXMLString()-Methode. Bei XML-Objekten mit einfachem Inhalt (mit nur einem Textelement) gibt die toString()-Methode nur den Textinhalt des Elements zurück, wie im folgenden Beispiel dargestellt ist:

var myXML:XML =  
    <order> 
        <item id='1' quantity='2'> 
            <menuName>burger</menuName> 
            <price>3.95</price> 
        </item> 
    <order>; 
 
trace(myXML.item[0].menuName.toXMLString());  
    // <menuName>burger</menuName> 
trace(myXML.item[0].menuName.toString()); 
    // burger

Wenn Sie die trace()-Methode verwenden, ohne toString() oder toXMLString() anzugeben, werden die Daten standardmäßig mithilfe der toString()-Methode konvertiert, wie im folgenden Codebeispiel dargestellt ist:

var myXML:XML =  
    <order> 
        <item id='1' quantity='2'> 
            <menuName>burger</menuName> 
            <price>3.95</price> 
        </item> 
    <order>; 
 
trace(myXML.item[0].menuName);  
    // burger

Bei Verwendung der trace()-Methode zum Debuggen empfiehlt es sich jedoch in der Regel, die toXMLString()-Methode zu verwenden, damit die trace()-Methode umfassendere Daten ausgibt.

Konvertieren von Strings in XML-Objekte

Sie können wie folgt mit dem new XML()-Konstruktor ein XML-Objekt aus einem String erstellen:

var x:XML = new XML("<a>test</a>");

Beim Versuch, einen String in XML zu konvertieren, der ungültige und nicht korrekt strukturierte XML-Daten enthält, wird ein Laufzeitfehler ausgelöst:

var x:XML = new XML("<a>test"); // throws an error

Konvertieren von Attributwerten, Namen und Textwerten aus Strings

Alle XML-Attributwerte, XML-Namen und XML-Textwerte sind vom Datentyp String und müssen gegebenenfalls in andere Datentypen umgewandelt werden. Im folgenden Codebeispiel werden Textwerte beispielsweise mithilfe der Number()-Funktion in Zahlen umgewandelt:

var myXML:XML =  
                        <order> 
                            <item> 
                                <price>3.95</price> 
                            </item> 
                            <item> 
                                <price>1.00</price> 
                            </item> 
                        </order>; 
 
var total:XML = <total>0</total>; 
myXML.appendChild(total); 
 
for each (var item:XML in myXML.item) 
{ 
    myXML.total.children()[0] = Number(myXML.total.children()[0])  
                                                + Number(item.price.children()[0]); 
} 
trace(myXML.total); // 4.95;

Wenn in diesem Code nicht die Number()-Funktion verwendet wird, wird der „+“-Operator als Stringverkettungsoperator interpretiert, und die Ausgabe der trace()-Methode in der letzten Zeile lautet wie folgt:

01.003.95