XML tür dönüştürmesi

Flash Player 9 ve üstü, Adobe AIR 1.0 ve üstü

XML nesnelerini ve XMLList nesnelerini String değerlerine dönüştürebilirsiniz. Aynı şekilde, dizeleri de XML nesnelerine ve XMLList nesnelerine dönüştürebilirsiniz. Ayrıca, tüm XML nitelik değerlerinin, adlarının ve metin değerlerinin dize olduğunu unutmayın. İlerleyen bölümlerde, bu XML tür dönüştürmesi biçimlerinin tümü ele alınmıştır.

XML ve XMLList nesnelerini dizelere dönüştürme

XML ve XMLList sınıfları, bir toString() yöntemini ve bir toXMLString() yöntemini içerir. toXMLString() yöntemi, XML nesnesinin tüm etiketlerini, niteliklerini, ad alanı bildirimlerini ve içeriklerini barındıran bir dize döndürür. Karmaşık içerik (alt öğeler) barındıran XML nesneleri için, toString() yöntemi toXMLString() yöntemiyle tamamen aynı şeyi yapar. Basit içerik barındıran XML nesneleri (yalnızca bit metin öğesi barındıran) için, toString() yöntemi aşağıdaki örnekte gösterildiği gibi, yalnızca öğenin metin içeriğini döndürür:

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

toString() veya toXMLString() öğesini belirtmeden trace() yöntemini kullanırsanız, bu kodda gösterildiği gibi, varsayılan olarak toString() yöntemi kullanılarak veriler dönüştürülür:

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

Kodun hatalarını ayıklamak için trace() yöntemini kullanırken genellikle trace() yönteminin daha tam veri vermesi için toXMLString() yöntemini kullanmayı istersiniz.

Dizeleri XML nesnelerine dönüştürme

Aşağıdaki gibi, bir dizeden XML nesnesi oluşturmak için, new XML() yapıcısını kullanabilirsiniz:

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

Aşağıdaki gibi, bir dizeyi, geçersiz XML'i veya düzgün biçimlendirilmemiş XML'i temsil eden bir dizeden XML'e dönüştürmeyi denerseniz, bir çalışma zamanı hatası atılır:

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

Dizelerden nitelik değerlerini, adları ve metin değerlerini dönüştürme

Tüm XML nitelik değerleri, adları ve metin değerleri, String veri türündedir ve bunları başka veri türlerine dönüştürmeniz gerekebilir. Örneğin, aşağıdaki kod, metin değerlerini sayılara dönüştürmek için Number() işlevini kullanır:

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;

Bu kod Number() işlevini kullanmasaydı, kod, + operatörünü dize bitiştirme operatörü olarak yorumlardı ve son satırdaki trace() yöntemi çıktı olarak şunu verirdi:

01.003.95