簡體   English   中英

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

[英]What's the best way to represent a tree with XML?

我正在實現一些類來處理常見的數據結構(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

你說什么? 您還有其他建議嗎?

在您的描述中,我看不到根,樹的葉子和其他節點之間的任何重要結構差異。 因此,它們都可以具有相同的內容模型,如本例所示:

<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>

沒有“最佳”方式來表示XML中的樹。 這完全取決於您要針對其優化存儲的內容-您是否希望能夠快速跟蹤特定的節點? 然后,扁平(更好)的表示可能會更好。 如果您想使描述不冗長,那么您概述的方法將非常好(盡管我可能會將'root'子級轉換為屬性(root / value),這樣xml中的每個節點實際上都是樹節點)。

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

樹中的元素是節點,而不是樹。 整個節點程序集構成一棵樹。

另外,XML本身就是一棵樹,因此您不必顯式地對其建模。

我認為,數據結構在計算機上而不是人類上應該很容易。 如果您想要人類可讀的數據版本,只需創建一個漂亮的打印訪問者即可

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM