2011-03-15 56 views
3

我有一個多維數組如:如何在XML文件中構建多維數組?

String[][] greatCities = new String[2][2]; 
greatCities[0][0] = "Vancouver"; 
greatCities[0][1] = "Charlottetown"; 
greatCities[1][0] = "Zürich"; 
greatCities[1][1] = "Bern"; 

現在我正在尋找一個很好的方式,以節省結構(無代碼)這個數組到一個XML文件。我到目前爲止最好的解決方案是:

<GreatCities> 
    <Item index0="0" index1="0">Vancouver</Item> 
    <Item index0="0" index1="1">Charlottetown</Item> 
    <Item index0="1" index1="0">Zürich</Item> 
    <Item index0="1" index1="1">Bern</Item> 
</GreatCities> 

有沒有人有更好的解決方案?

+1

我有一個蠕動的懷疑,這個二維數組實際上是一些其他數據結構的投影。一張簡單的地圖,也許?成對的列表?如果「溫哥華」爲0,1而不是0,0,這意味着什麼?答案可能會影響這應該如何映射。 – 2011-03-15 15:02:00

+0

對我來說也是這樣。什麼信息通過二維表格的排列傳達出來?在不知道的情況下,設計一個捕獲信息的XML結構是不可能的。 – 2011-03-15 21:37:16

+0

我完全同意你的觀點!但是......(它聽起來可能不專業)我們不知道後面的數據結構是怎麼樣的......我們得到一個文本文件,它被逐行掃描並且必須被轉換成xml結構以供將來使用(例如比較等等)。沒有任何信息丟失是非常重要的。 – 2011-03-16 09:39:28

回答

7

作爲其有效數組的數組...

<GreatCity index =0> 
    <Name index="0">Vancouver</Name> 
    <Name index="1">Charlottetown</Name> 
</GreatCity> 
etc... 
+0

我們只是有同樣的想法。 :-)我們認爲這是最好的方法。謝謝! – 2011-03-15 15:08:03

2
<GreatCities> 
    <Items index="0"> 
    <Item index="0">Vancouver</Item> 
    <Item index="1">Charlottetown</Item> 
    </Items> 
    <Items index="1"> 
    <Item index="0">Zürich</Item> 
    <Item index="1">Bern</Item> 
    </Items> 
</GreatCities> 
2

你的溶液可以是足夠緊湊,但我認爲是複雜的反序列化(例如檢索來自XML陣列)。事實上,你應該儘快知道數組的大小:要做到這一點,你必須掃描整個XML文檔。 我寧願喜歡排列而成的結構,沒有屬性索引:

<GreatCities> 
    <GreatCity> 
    <Name>Vancouver</Name> 
    <Name>Charlottetown</Name> 
    </GreatCity> 
    <GreatCity /> 
    <GreatCity> 
    <Name>Zürich</Name> 
    <Name/> 
    <Name>Bern</Name> 
    </GreatCity> 
</GreatCities> 

在該示例中,我已插入兩個空元素指向和空行/細胞。 此時,您可以通過填充鋸齒陣列來掃描xml文檔。

+0

不幸的是,我們需要索引,因爲我們將專有文本文件映射到XML文件逐行掃描,並且數組值可能不會在文本文件中排序,但我們將獲得有關其索引的信息。不過,我同意你的解決方案在其他情況下。謝謝! – 2011-03-15 15:27:55