2016-07-05 64 views
3

在寫2D點的XML數組我得到以下輸出:以XML格式書寫2D點

<Vertices count="42"> 
    <V> 
    <X>110</X> 
    <Y>0</Y> 
    </V> 
    <V> 
    <X>109.5105</X> 
    <Y>3.0901</Y> 
    </V> 
    <V> 
    <X>108.0901</X> 
    <Y>5.8778</Y> 
    </V> 
    ... 

內部,我們對什麼是最好的佈局/標籤命名爲寫他們討論。以下是其他幾個選項:

<Vertices> 
    <Point>110, 0</Point> 
    <Point>109.5105, 3.0901</Point> 
    <Point>108.0901, 5.8778</Point> 
    ... 

<Vertices> 
    <item>110, 0</item> 
    <item>109.5105, 3.0901</item> 
    <item>108.0901, 5.8778</item> 
    ... 

假設你需要解析這個XML文件:

  • 什麼佈局將你最喜歡?
  • 根據XML規範哪種佈局更正確?

謝謝。

回答

1

這是非常基於觀點的,所以這裏是我的:

我會去的第一種方法有以下幾個原因:

  1. 這種數據格式很可能僅在內部使用的,所以它不」不管它是否美觀,只要它是機器可讀的。
  2. 它很容易擴展。想要一個Z座標?那麼,添加另一個元素。這是可能的而不破壞現有功能!這意味着需要Z座標的應用程序版本仍然可以讀取不包含它的XML文件,並假定Z爲0.您的應用程序無法處理Z座標的版本將忽略它。
  3. 它很容易驗證。您可以假定每個座標都包含一個浮點值,可以使用標準方法(如XSD)進行驗證。其他格式需要更多關於每個元素內容的知識,這些內容可能不包含在標準工具中。

在格式化另一個選擇可能是這樣的:

<vertices> 
    <vertex x="0.123" y="1.443" /> 
    <vertex x="1.321" y="0.334" /> 
</vertices> 

的優勢同樣的列表爲真爲這種格式,只知道它是更容易閱讀的人。


編輯:我忘了,解析它與您的第一項建議(和我上面給了一個),比​​你建議的其他兩種格式,這需要另一個字符串分割/剪裁操作每個點要容易得多。

+0

那麼'count = 42'屬性呢?我們可以包括它嗎? – abenci

+0

它只是導致問題。想象一下,有人在不更新屬性的情況下手動刪除節點。此外,該屬性的重點是什麼?在分析XML文件之後甚至在分析XML文件時,您都可以輕鬆計算頂點的數量。使用'XmlDocument'這是一件不容易的事情。 –

+0

請注意,XML規範不會對節點的讀取順序做任何聲明!我所知道的大多數XML解析器將按照它們在XML文件中的順序返回節點,但這不是給定的,所以如果頂點的順序是相關的,則需要在解析XML文件後可以排序的另一個屬性。 –