2009-10-15 10 views
0

Comment savoir si une liste XML a un enfant? Mon code ci-dessous utilise du code dur indiquant que je veux exécuter l'enfant de mon XML. Mais je ne voudrais pas écrire écrire tous les enfants() si j'ai beaucoup d'enfants.Détecter dynamiquement un enfant XML

private function dataLevel():void { 
     for (var j:Number=0; j<xmlList.length(); j++) { 
      createBranch(); 

      for (var k:int = 0; k<xmlList[j].children().length(); k++) { 
       createBranch(); 
      } 

      for (var l:int = 0; l<xmlList[j].children().children().length(); l++) { 
       createBranch(); 
      } 
     } 
    } 

Répondre

2

Que fait createBranch? Cela ne dépend-il pas du nom de l'enfant? À partir du code donné, il semble que vous voulez juste appeler le createBranch autant de fois qu'il y a d'enfants (ou de petits-enfants) - bien que je ne sois pas sûr de ce que xmlList[j].children().children().length() va retourner. Si vous voulez juste obtenir une liste de tous les enfants et petits-enfants, utilisez la méthode descendants().

Si vous souhaitez parcourir les enfants dans l'ordre hiérarchique, écrivez une méthode récursive.

function traverseChildren(node:XML):void 
{ 
    //calling createBranch here means one call per each xml children 
    createBranch(); 
    var list:XMLList = node.children(); 
    for each(var child:XML in list) 
    { 
    if(child.nodeKind() == "element") 
     traverseChildren(child); 
    //if you wanna call createBranch for each attribute and text node 
    //and comments and processing instructions, call it here instead 
    } 
} 
+0

Eh bien, cela m'aide à trouver le moyen de résoudre ma question. Merci! – Hwang

Questions connexes