我正在构建一个处理基于列的数据库中的数据的应用程序。我将数据作为数组获取,其中每个数组代表数据库返回的表中的一列。数据包含父子关系。数组可能看起来像这样(将每个数组中的相同索引视为普通 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 的新手,所以我无法告诉自己什么会更有效率。