使用XML表示树的最佳方法是什么?

时间:2010-12-14 15:29:46

标签: xml data-structures tree

我正在实现一些类来处理公共数据结构(Tree,BinaryTree,Search Binary Tree,BTree,AVL等)。我想要一种方法来将树信息存储在数据源中并将其解析为其中一个类。最简单的方法是使用XML(可移植性非常重要)。问题是我制作的XML文档不容易阅读。他们不够“直观”。例如,我正在做这样的事情:

<?xml version="1.0" encoding="UTF-8"?>
<tree>
    <root>100</root>
    <node>
        <tree>
            <root>50</root>     
        </tree>
    </node>
    <node>
        <tree>
            <root>200</root>        
        </tree>
    </node>
</tree>

在那里,树将是这样的:

                    100
              50                200

你怎么说?你有其他推荐吗?

4 个答案:

答案 0 :(得分:5)

我没有在您的描述中看到根,树叶和其他节点之间的任何重要结构差异。所以他们都可以拥有相同的内容模型,如下例所示:

<tree>
    <value>100</value>
    <tree>
        <value>50</value>
    </tree>
    <tree>
        <value>200</value>
    </tree>
</tree>

此结构稍微冗长,XML文档树与您尝试表示的树匹配。如果您的值可以表示为字符串,您甚至可以这样写:

<tree>
    100
    <tree>50</tree>
    <tree>200</tree>
</tree>

答案 1 :(得分:2)

没有“最好”的方式来表示XML中的树。这一切都取决于您希望优化存储的内容 - 您是否希望能够快速跟踪特定节点?然后平坦(呃)表示可能会更好。如果你想保持描述非冗长,那么你概述的方法将会非常好(虽然我可能会将'root'子项转换为属性(root / value),这样xml中的每个节点实际上都是树节点)。

答案 2 :(得分:1)

<node value="100">
    <node value="50" />
    <node value="200" />
</node>

树中的元素是节点,而不是树。整个节点组件构成一棵树。

此外,XML本身就是一棵树,因此您无需对其进行显式建模。

答案 3 :(得分:0)

在我看来,数据结构在计算机上很容易,而不是人。如果您想要一个人类可读的数据版本,只需创建漂亮的打印visitor