2011-02-25 3 views
1

Je souhaite créer des tableaux imbriqués. Voici mon code, après avoir chargé xml.AS3 Création d'un tableau multidimensionnel à partir de xml

function readXML(event:Event):void 
{ 
_data = new XML(event.target.data); 
for each (var usr in _data.item) 
{ 
allUserbase.push({name: [email protected],state: [email protected], 
complex: usr.complex,image:[email protected], link: [email protected]}); 
for (var k:int = 0; k< allUserbase.length; k++){ 
trace(k, allUserbase[k].complex); 
for (var t:int = 0; t< allUserbase[k].length; t++){ 
trace(k,t, allUserbase[k][t]); 
// this part when i try to built 2d array doesnt work.. :(*/ 
} 

Voici mon XML:

<content> 
    <item image="John.jpg" name="John" state = "New Jersey" > 
    <complex fid = "0"> mg749</complex> 
    <complex fid = "1"> ks749</complex> 
    <complex fid = "2"> ks678</complex>  
    </item>  
    <item image="Smith.jpg" name="Smith" state = "California"> 
    <complex fid = "0"> we649</complex> 
    <complex fid = "1"> sd449</complex> 
    <complex fid = "2"> df459</complex> 
    <complex fid = "3"> hj569</complex>  
    </item> 
    <item image="Smith.jpg" name="Mike" state = "New York"> 
    <complex fid = "0"> 8794</complex> 
    <complex fid = "1"> 4384</complex>  
    </item> 
    </content>; 
+0

Est-ce la troisième fois que vous posez la même question en 3 jours? et ne pas accepté l'une des anciennes réponses? – Mike

+0

Oh oui, je savais que j'avais déjà vu cette question. – Taurayi

+0

@Mike et @Taurayi -yes, je n'ai pas eu ma réponse et était désespérée mais merci beaucoup pour l'aide .. – hanna

Répondre

1

est le suivant le long des lignes de ce que vous voulez ?:

var contentXml:XML =   
<content> 
    <item image="John.jpg" name="John" state = "New Jersey" > 
     <complex fid = "0"> mg749</complex> 
     <complex fid = "1"> ks749</complex> 
     <complex fid = "2"> ks678</complex>  
    </item>  
    <item image="Smith.jpg" name="Smith" state = "California"> 
     <complex fid = "0"> we649</complex> 
     <complex fid = "1"> sd449</complex> 
     <complex fid = "2"> df459</complex> 
     <complex fid = "3"> hj569</complex>  
    </item> 
    <item image="Smith.jpg" name="Mike" state = "New York"> 
     <complex fid = "0"> 8794</complex> 
     <complex fid = "1"> 4384</complex>  
    </item> 
</content>; 

var contentArray:Array = new Array(); 

for each(var item in contentXml.item) 
{ 
    var itemArray:Array = new Array(); 
    itemArray.push([email protected], [email protected], [email protected]); 

    contentArray.push(itemArray); 

    for each(var complex in item.complex) 
    { 
     var complexArray:Array = new Array(); 
     complexArray.push([email protected], complex); 

     itemArray.push(complexArray); 

    }// end for each 

}// end for each 

trace(contentXml.item[0][email protected]); // outputs: John.jpg 
trace(contentArray[0][0]) // outputs: John.jpg 

trace(contentXml.item[0].complex[0]); // outputs: mg749 
trace(contentArray[0][3][1]) // outputs: mg749 

[UPDATE]

Vous pouvez également utiliser une combinaison de Array objets et objets Dictionary comme ce qui suit:

var contentArray:Array = new Array(); 

for each(var item in contentXml.item) 
{ 
    var itemDictionary = new Dictionary(); 
    itemDictionary["image"] = [email protected]; 
    itemDictionary["name"] = [email protected]; 
    itemDictionary["state"] = [email protected]; 

    var complexArray:Array = new Array(); 
    itemDictionary["complex"] = complexArray; 

    contentArray.push(itemDictionary); 

    for each(var complex in item.complex) 
    { 
     var complexDictionary:Dictionary = new Dictionary(); 
     complexDictionary["fid"] = [email protected] 
     complexDictionary["value"] = complex; 

     complexArray.push(complexDictionary); 

    }// end for each 

}// end for each 

trace(contentXml.item[0][email protected]); // outputs: John.jpg 
trace(contentArray[0]["image"]) // outputs: John.jpg 

trace(contentXml.item[0].complex[0]); // outputs: mg749 
trace(contentArray[0]["complex"][0]["value"]) // outputs: mg749 
+0

Salut Taurayi, merci beaucoup pour l'aide .. c'est génial .. je suis juste confus à propos d'une chose, et pardonnez-moi si je demande quelque chose de stupide, mais comment puis-je "trace (contentXml.item [0] .complex [2]); // sorties: ks678 trace (contentArray [0] [3] [1 ]); // sorties: mg749 comment puis-je accéder "ks678" à partir d'ici "... merci beaucoup encore pour l'aide .. – hanna

+0

@ Taurayi..i obtenu cela aussi merci beaucoup .. objets dictionnaire fonctionne très bien .. J'ai encore une question si je dois créer une fonction de recherche pour cela et je suis capable de le faire correctement pour le complexe, suite à s le code que j'utilise: function search (MouseEvent): void {for (var n: int = 0; n hanna

+0

Hi..thanks pour votre aide..i finalement résolu ceci .. merci beaucoup .. – hanna

0

{name: [email protected],state: [email protected], complex: usr.complex,image:[email protected], link: [email protected]} est pas Array, mais une déclaration Object, ses éléments sont accessibles par allUserbase[k].complex ou allUserbase[k].['complex'], ils ne disposent pas d'un index numérique.

+0

thnx pour répondre. Comment puis-je accéder aux données compplex en créant un tableau 2d lilke allUserbase [0] [1] .. y at-il un moyen de le faire .. – hanna

Questions connexes