2009-10-15 2 views
0

Как узнать, есть ли в списке XML дочерний элемент? Мой код ниже использует жесткий код, в котором говорится, что я хочу запустить дочерний элемент моего XML. Но я бы не хотел писать каждый ребенок(), если у меня много детей.Динамически обнаруживать 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(); 
      } 
     } 
    } 

ответ

2

Что делает createBranch? Разве это не зависит от имени ребенка? Из данного кода кажется, что вы просто хотите называть createBranch столько раз, сколько есть дети (или внуки), хотя я не уверен, что вернется xmlList[j].children().children().length(). Если вы просто хотите получить список всех детей и внуков, используйте метод descendants().

Если вы хотите пройти через детей в иерархическом порядке, напишите рекурсивный метод.

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

Ну, это помогает мне разобраться в способах решения моего вопроса. Thanx! – Hwang

Смежные вопросы