2010-01-15 10 views
2

Il existe un certain nombre de messages sur la fusion de XML avec Java, mais je ne trouve aucune référence à ActionScript pour la même tâche.AS3: Fusion de fichiers XML

J'ai un groupe de fichiers XML que je dois charger. Je veux qu'ils trient en un seul objet XML en mémoire.

Par exemple, disons que ce sont mes fichiers XML:

fichier 1

<xml> 
    <type name="1" group="a"> 
     <unit> value1 </unit> 
    </type> 
    <type name="1" group="b"> 
     <unit> value2 </unit> 
    </type> 
    <type name="2" group="a"> 
     <unit> value3 </unit> 
    </type> 
</xml> 

Fichier 2

<xml> 
    <type name="1" group="a"> 
     <unit> value4 </unit> 
    </type> 
    <type name="1" group="b"> 
     <unit> value5 </unit> 
    </type> 
    <type name="2" group="a"> 
     <unit> value6 </unit> 
    </type> 
    <type name="3" group="a"> 
     <unit> value7 </unit> 
    </type> 
</xml> 

Fusionnée

<xml> 
    <type name="1" group="a"> 
     <unit> value1 </unit> 
     <unit> value4 </unit> 
    </type> 
    <type name="1" group="b"> 
     <unit> value2 </unit> 
     <unit> value5 </unit> 
    </type> 
    <type name="2" group="a"> 
     <unit> value3 </unit> 
     <unit> value6 </unit> 
    </type> 
    <type name="3" group="a"> 
     <unit> value7 </unit> 
    </type> 
</xml> 

Dans cet exemple, les deux fichiers sont fusionnés et les unités sont placées dans des noms et des groupes de même type.

priorité Tri: Nom Type> Groupe Type> Unité Valeur

J'espère que c'est clair. Veuillez demander si des précisions supplémentaires sont nécessaires.

Répondre

2

Cela devrait fonctionner pour l'exemple donné.

var t1:XML, t2:XML; 
var merged:XML = new XML(file1.toXMLString()) 
for each(t1 in merged.type) 
    for each(t2 in file2.type.(@name == [email protected] && @group == [email protected])) 
    t1.appendChild(t2.unit.toXMLString()); 
for each(t2 in file2.type) 
    if(merged.type.(@name == [email protected] && @group == [email protected]).length() == 0) 
    merged.appendChild(t2.toXMLString()); 
trace(merged.toXMLString());