2012-06-27 88 views
1

我看到這個XML:歧義XML結構

<amount type="downpayment"></amount> 

我不知道爲什麼沒有做這樣的:

<amount> 
     <type>downpayment</type> 
</amount> 

1.Is有什麼特別的原因或意味着它爲什麼寫在方法1而不是2?

2.如何將這兩個XML轉換爲POJO?會有什麼區別。

3.any不能使用XML的保留字嗎?

回答

0

第一個是XML Attribute,第二個是XML Child Element。以下是一些鏈接,其談論他們的比較:

On w3schools.com

On IBM developerworks

On Stackoverflow

+0

好的,在兩種方法之間翻譯成POJO時有什麼區別嗎? –

+0

這將取決於你使用什麼將XML文檔中包含的數據轉換成Java對象模型。 –

1

在有很多可以明確有用於一個對象的屬性屬性的情況下,和孩子包含對象的元素。

一個例子就是「文檔樣式」的XML應用程序,比如XHTML。在:

<p class="warning"><a href="/helpAccountExpire">Your account has expired</a></p> 

然後pa之間的關係是,前者表示文檔元素,後者是的一部分,而class給出關於的phrefa性質的更多信息。

這也是有道理的非「文件式」的應用:

<list presorted="true"> 
    <item>4</item><item>7</item><item>23</item> 
</list> 

這裏list包含數字4,7和23,而presorted屬性告訴使用列表已經排序(並因此如果我們需要排序,我們可以放棄自行排序的代價)。

有很多情況下可以合理使用,個人喜好通常會影響XML應用程序的設計。當然,任何不能用簡單的字符串或可能超過可能的值的地方(在你的例子中,在你的問題中,amount在第一種情況下只能有零個或一個type,但可以有任何數字第二個。

如何將它翻譯成POJO取決於翻譯的內容,您必須指定。

至於保留字,任一種元素或屬性的名稱可以與匹配任何字符開始:

":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] 

和名稱的剩餘部分可以是相匹配的,或者也任何字符:

"-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040] 

請注意,這包含一些Unicode非字符,雖然沒有被XML標準禁止,但不能在XML中,因爲XML是基於Unicode構建的,所以它們在實踐中也被禁止。

有進一步的規則開頭xml名在任何資本(XMLxMl等)保留在像XML本身,XML命名空間,等等(xml:spacexml:langxmlns核心XML技術的使用和xmlns:前綴這是正在使用的例子)。

(這是XML1.0,XML1.1的規則略有不同,可以說明一些奇怪的情況,但大多隻是真正需要這些澄清規則的人才需要)。

使用XML名稱空間的應用程序進一步限制了上述內容,名稱中只能有一個冒號(:),在這種情況下,左邊的部分是標識所使用名稱空間的名稱空間前綴(或默認命名空間,如果沒有的話)和右邊的位(或者如果在默認namespaec中是整個事物)是本地名稱。暗示,這禁止用冒號開始一個名字。

即使您沒有使用名稱空間,遵循這些限制也是一個好主意,以便您可以與所使用的技術兼容。

+0

+1對於很好的解釋。 –