Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';用XML表示树的最佳方法是什么?_Xml_Data Structures_Tree - Fatal编程技术网

什么';用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>

我正在实现一些类来处理常见的数据结构(Tree、BinaryTree、searchbinarytree、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

你怎么说?您还有其他建议吗?

用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,它不必是递归的-您的表示是递归的(我唯一要改变的是,去掉“根”节点,只使用“树”节点,即:用这种方式表示整个树。但我想说的是,有很多其他合法的方法来存储数据,这完全取决于你想用它做什么以及你想优化它的目的。