Konwersja typów XML

Flash Player 9 i nowsze wersje, Adobe AIR 1.0 i nowsze wersje

Obiekty XML i XMLList można konwertować na wartości typu String. Podobnie, możliwe jest konwertowanie ciągów znaków na obiekty XML i XMLList. Należy także pamiętać, że wszystkie wartości atrybutów, nazwy i wartości tekstowe XML są ciągami znaków. W poniższej sekcji omówiono wszystkie warianty konwersji typów XML.

Konwertowanie obiektów XML i XMLList na ciągi znaków

Klasy XML i XMLList zawierają metody toString() i toXMLString() . Metoda toXMLString() zwraca ciąg znaków zawierający wszystkie znaczniki, atrybuty, deklaracje przestrzeni nazw i treść obiektu XML. W przypadku obiektów XML z treścią złożoną (elementami podrzędnymi) działanie metody toString() jest równoważne działaniu metody toXMLString() . W przypadku obiektów XML z prostą treścią (które mogą zawierać tylko jeden element tekstowy) metoda toString() zwraca tylko tekstową treść elementu, co ilustruje poniższy przykład:

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

Użycie metody trace() bez wywołania toString() lub toXMLString() spowoduje domyślne przekonwertowanie danych przy użyciu metody toString() , tak jak ilustruje to poniższy kod:

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

Używając metody trace() do debugowania kodu, często korzysta się z metody toXMLString() , dzięki czemu metoda trace() generuje bardziej kompletne wyniki.

Konwertowanie ciągów znaków na obiekty XML

Konstruktor new XML() umożliwia utworzenie obiektu XML z ciągu znaków:

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

Próba przekonwertowania na XML ciągu zawierającego niepoprawny kod XML spowoduje zgłoszenie błędu w czasie wykonywania, co ilustruje poniższy przykład:

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

Konwertowanie wartości, nazw i wartości tekstowych atrybutów z ciągów znaków

Wszystkie wartości, nazwy i wartości tekstowe atrybutów są ciągami znaków typu String. Niekiedy zachodzi potrzeba przekonwertowania ich na dane innego typu. Na przykład w poniższym kodzie użyto funkcji Number() do przekonwertowania wartości tekstowych na liczby:

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;

Gdyby w kodzie nie użyto funkcji Number() , operator + zostałby zinterpretowany jako operator konkatenacji ciągów znaków, a metoda trace() wywołana w ostatnim wierszu wyświetliłaby następujący wynik:

01.003.95