0

我正在构建一个处理基于列的数据库中的数据的应用程序。我将数据作为数组获取,其中每个数组代表数据库返回的表中的一列。数据包含父子关系。数组可能看起来像这样(将每个数组中的相同索引视为普通 SQL 数据库中的一行):

[0] empty   [1] empty   [2] ID-A  [3] ID-B  [4] ID-B <-- this represents nodes' parents  
[0] ID-A    [1] ID-A    [2] ID-B  [3] ID-C  [4] ID-D <-- this represents nodes' labels  
[0] 100     [1] 200     [3] 300   [4] 150   [4] 150  <-- this represents values associated with nodes

当然,它们要大得多。多达 100000 个元素。我想做的就是从我拥有的数据中创建以下 XML:

<root>  
   <node label="ID-A" value="300">  
      <node label="ID-B" value="300">  
          <node label="ID-C" value="150"/>  
          <node label="ID-D" value="150"/>  
      </node>
   </node>
</root>

请注意,对于 ID-A,顶层只有一个条目,它的值是数组中所有条目的总和。

我事先不知道结构的深度以及任何 ID 或值。如何创建 XML 以便以后能够在树控件中显示它?我想要做的是遍历数组,如果 ID 不存在,则每次为 ID 添加一个节点,但如果 ID 存在,只需更新值(将其添加到当前值)。我可以创建第一层,但我无法在更大的深度访问和更新适当的元素。基本上,我如何将 ID-B 下面的 ID-E 添加到上面的 XML 中,以实现以下目的:

<root>  
   <node label="ID-A" value="300">  
      <node label="ID-B" value="300">  
          <node label="ID-C" value="150"/>  
          <node label="ID-D" value="150"/>  
          <node label="ID-E" value="sth"/>
      </node>
   </node>
</root>

或者用我拥有的数组中的孩子构建一个 ArrayCollection 会更好吗?我是 Flex 的新手,所以我无法告诉自己什么会更有效率。

4

1 回答 1

1

将 100k 行转换为 XML 可能会非常慢,并且 XML 占用大量内存,如果它只是用作树数据提供程序,那么这是浪费的。如果您只需要这样做以查看树中的数据,也许您可​​以将其保存在数组中,但使用客户树数据描述符来定义层次结构。http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/controls/Tree.html#dataDescriptor

于 2012-07-23T21:56:59.103 回答