什么';用XML表示树的最佳方法是什么?
我正在实现一些类来处理常见的数据结构(Tree、BinaryTree、searchbinarytree、BTree、AVL等)。我想要一种在数据源中存储树信息并将其解析为这些类之一的方法。最简单的方法是使用XML(可移植性非常重要)。问题是我制作的XML文档不容易阅读。它们不够“直观”。例如,我在做这样的事情:什么';用XML表示树的最佳方法是什么?,xml,data-structures,tree,Xml,Data Structures,Tree,我正在实现一些类来处理常见的数据结构(Tree、BinaryTree、searchbinarytree、BTree、AVL等)。我想要一种在数据源中存储树信息并将其解析为这些类之一的方法。最简单的方法是使用XML(可移植性非常重要)。问题是我制作的XML文档不容易阅读。它们不够“直观”。例如,我在做这样的事情: <?xml version="1.0" encoding="UTF-8"?> <tree> <root>100</root>
<?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
你怎么说?您还有其他建议吗?用XML表示树没有“最佳”方法。这完全取决于您希望优化存储的目的—是否希望能够快速跟踪特定节点?那么平面(er)表示可能更好。如果您希望保持描述不冗长,那么您概述的方法将非常好(尽管我可能会将“根”子级转换为属性(根/值),这样xml中的每个节点实际上都是一个树节点)。在xml中表示树没有“最佳”方法。这完全取决于您希望优化存储的目的—是否希望能够快速跟踪特定节点?那么平面(er)表示可能更好。如果您希望保持描述不冗长,那么您概述的方法将非常好(尽管我可能会将“根”子级转换为属性(根/值),这样xml中的每个节点实际上都是一个树节点)。在您的描述中,我看不到树的根、叶和,和其他节点。因此,它们都可以具有相同的内容模型,如本例所示:
<tree>
<value>100</value>
<tree>
<value>50</value>
</tree>
<tree>
<value>200</value>
</tree>
</tree>
100
50
200
此结构的详细程度稍低,并且XML文档树与您试图表示的树相匹配。如果您的值可以表示为字符串,您甚至可以这样编写:
<tree>
100
<tree>50</tree>
<tree>200</tree>
</tree>
100
50
200
在您的描述中,我没有看到树的根、叶子和其他节点之间有任何重要的结构差异。因此,它们都可以具有相同的内容模型,如本例所示:
<tree>
<value>100</value>
<tree>
<value>50</value>
</tree>
<tree>
<value>200</value>
</tree>
</tree>
100
50
200
此结构的详细程度稍低,并且XML文档树与您试图表示的树相匹配。如果您的值可以表示为字符串,您甚至可以这样编写:
<tree>
100
<tree>50</tree>
<tree>200</tree>
</tree>
100
50
200
在我看来,数据结构应该在计算机上简单,而不是在人身上。如果您想要一个可读的数据版本,只需创建一个漂亮的打印即可。在我看来,数据结构在计算机上很容易,而不是在人身上。如果您想要一个可读的数据版本,只需创建一个漂亮的打印即可。
树中的元素是节点,而不是树。整个节点程序集组成一棵树
而且,XML本身就是一棵树,因此您不必显式地对其建模。
树中的元素是节点,而不是树。整个节点程序集组成一棵树
此外,XML本身就是一棵树,因此您不必显式地对其建模。@santiagobasulto,它不必是递归的——您的表示是递归的(我唯一要改变的是去掉“根”节点,而只使用“树”节点,即:用这种方式表示整个树。但我想说的是,有很多其他合法的方法来存储数据,这完全取决于你想用它做什么以及你想优化它做什么。@santiagobasulto,它不必是递归的-您的表示是递归的(我唯一要改变的是,去掉“根”节点,只使用“树”节点,即:用这种方式表示整个树。但我想说的是,有很多其他合法的方法来存储数据,这完全取决于你想用它做什么以及你想优化它的目的。