动态检测XML子项

时间:2009-10-15 03:58:18

标签: xml actionscript-3

如何知道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();
            }
        }
    }

1 个答案:

答案 0 :(得分: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
  }
}