2009-05-11 4 views
0

ich ein XML-Objekt in AS3, die wie folgt formatiert ist:Umbenennen von XML-Knoten E4X in AS3 mit

<data> 
    <nodes> 
    <item></item> 
    <item></item> 
    ... 
    </nodes> 
    <nodes> 
    <item></item> 
    <item></item> 
    ... 
    </nodes> 
    ... 
</data> 

Mein Problem ist, ich die Knotennamen umbenennen möchte („Knoten“ und „item“) zu etwas relevanteres z „Knoten“ könnte „Autor“ sein und „Artikel“ könnte „Buch“ sein.

Also, was wäre der beste Weg, dies mit E4X in AS3 zu tun?

Antwort

7

können Sie die setName()-Methode von XML-Objekt in AS3 verwenden.

Beispiel:

//extract all nodes named "nodes" 

    var l:XMLList=data..nodes; 
    for each(var n:XML in l){ 
     n.setName("new_node_name"); 
    } 

    //extract all nodes named "item" 

    var l2:XMLList=data..item; 
    for each(var n2:XML in l2){ 
     n2.setName("new_item_name"); 
    } 
+0

ich es gehofft, wäre so etwas wie: data..nodes.setName ("new_node_name"); Aber das würde zu viel verlangen. Vielen Dank! –

0

Soweit ich weiß, gibt es keine Möglichkeit, dies nativ in ActionScript zu tun, aber hier ist eine einfache Funktion, die genau das erreichen wird. Zuerst konvertiere ich es in einen String und benutze dann einen einfachen regulären Ausdruck um alle Instanzen zu finden und zu ersetzen.

function replaceAll(findTag:String, replaceWith:String, source:XML):XML 
    { 
     var xmls:String = source.toXMLString(); 
     var findPattern:RegExp = new RegExp(findTag, "g"); 
     xmls = xmls.replace(findPattern, replaceWith); 
     return new XML(xmls); 
    } 

Ich hoffe, es hilft.