Apache flex 如何在Flex中遍历/重建UIComponent树结构

Apache flex 如何在Flex中遍历/重建UIComponent树结构,apache-flex,tree,traversal,Apache Flex,Tree,Traversal,我有一种UIComponent分组,它的类“Group”和“Element”看起来像这样 组可以有子级,子级也可以是元素或组,基本上类似于文件系统或几个图形程序中的str+g group函数。组的最简单形式是只包含子级的组,这也是树中最低级的组 编辑: 显示层次结构已经存在,我尝试将其持久化为xml Group - element - Group - element - Group -element -element

我有一种UIComponent分组,它的类“Group”和“Element”看起来像这样

组可以有子级,子级也可以是元素或组,基本上类似于文件系统或几个图形程序中的str+g group函数。组的最简单形式是只包含子级的组,这也是树中最低级的组

编辑: 显示层次结构已经存在,我尝试将其持久化为xml

Group
   - element
   - Group
      - element
      - Group
         -element
         -element
   - element
   - element
我想在xml文档中重建此结构以实现持久性。 我知道如何在Flex中构建xml文档,但不知道如何(递归地)正确遍历这个n树

更新:

为了只获取子节点,可以使用以下算法(伪代码)。但不知何故,我不明白如何从中创建xml

 walkTree(group) {
        children = node.getChildren
        if(children != null) {
            for(int i=0; i<children.length; i++) {
                if(children[i].isGroup()) {
                    walkTree(group[i]);
                } else {
                        trace(child);
                }
            }
        }
    }
walkTree(组){
children=node.getChildren
如果(子项!=null){

对于(int i=0;i作为起始点,我建议:


因此,基本上,您正在寻找的似乎是ActionScript3中的E4X,我的建议是从一开始就让您的结构是数据驱动的,这样XML就可以控制屏幕的绘制。这样您就拥有了XML,而无需进行任何修改


然而,如果你真的想这样做,你需要在每一层循环所有的子节点,并添加一些描述子节点的节点。然而,如果你没有数据驱动的视图,我看不出这对你有什么好处(如果是这样,而且不是XML,最好从数据端而不是视图端编写数据导出).

我感到困惑;您是在尝试遍历已创建的显示层次结构,还是在尝试创建层次结构?很抱歉,困惑。显示层次结构已经存在。我尝试将此层次结构持久化为xml。您为什么要关心持久化?以便以后可以重新创建它?或者出于其他原因?这样做非常罕见尝试“动态”创建显示层次结构在运行时。这个问题涉及很多主题。如果您需要帮助将算法转换为ActionScript,我们可以提供帮助。如果您需要帮助解析XML和创建显示对象,我们可以提供帮助,但您必须向我们展示您的XML。如果您需要帮助定义XML架构,这可能不是最好的提问论坛。如果您需要如果需要这三方面的帮助,你应该聘请一名顾问。我已经阅读了你的文章很多次,遍历正是E4X为你所做的。如果你需要编写自己的递归函数,你已经有了伪代码(也许你正在要求Actionscript翻译)。但是,你不太清楚你到底在问什么,我同意Flextras在这个问题上的观点。我不知道你的背景,也不知道你在这个问题上的长期目标,但如果你能向我们展示一幅大图,我们可能是一个比编写递归函数更好、更优雅的解决方案,因为这已经非常普遍了在Flex中为您完成。