2012-01-26 27 views
1

我有一个表格,其中有1.000行和6列。它有一个ID字段作为索引,第二个字段“Name”包含可判断的特定对象的名称。你可以猜到,Name是唯一的。Treeview基于单个字段

名称与“Plant.Tree.Apple.Pit”或“Animal_Mammal_Dog”或任何其他非字母/非数字作为分隔符相似。不是一个大问题。但我需要将这些名字分解成单词,并用这些单词来挖掘它们。因此,我的第一个例子将是4个等级,而我的第二个三个等级会很深。然后它需要在浏览器中显示给用户。

什么是建立这棵树的最有效的方法?

+0

你打开数据库模式更改建议,还是你不能修改的东西,绝对需要在你的数据库中做这个'Plant.Tree.Apple.Pit'的东西? –

+0

不,数据库模式已修复。太多的代码已经取决于这个结构,否则它会容易得多。 –

回答

0

那么,'最有效'通常取决于您如何计划访问数据。你只需要解析树,然后显示给用户,这就是它?

在这种情况下,我想我会将它建模为一个简单的树,由Node对象组成。

还有其他的树结构可以使用,但它们变得更加复杂,并且依赖于你打算如何使用这些数据。您是否在网络服务器上构建了这棵树,并且因此需要尽可能快地避免cpu挨饿?你只是显示给用户?

另一种选择是将原始行转储到页面,然后编写javascript以从转储的数据生成显示树。这样,客户端的浏览器就可以完成解析树并显示它的所有工作。

编辑回答您的评论

好吧,然后将一个标准的树结构的工作?我假设你知道如何制作一个,但以防万一:

你抓一行,解析它的标记。从第一个标记开始,从树的根开始,确定标记是否是当前节点的子标记;如果是,请将其设置为当前节点,然后继续下一个标记。如果没有,请将其插入树中并使其成为新的当前节点。将这些节点标记为命名空间节点。重复,直到你击中最后一个代表你的最终目标的代币。用参数将对象插入当前节点。

你可以用一个类来完成所有这一切;让该类存储节点类型(名称空间或对象),子节点列表,以及该节点是类型对象时该对象的属性。或者你可以通过继承和转换来实现,以便每个节点不必为该对象设置参数,在所有名称空间节点中,可听到的都是空的。

+0

是的,解析树,显示给用户。除了树的叶子将显示一些额外的领域。但是,问题主要在于构建该节点树。 –