1

我看到了这个 XML:

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

我想知道为什么不这样做:

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

1.用方法1而不是方法2写有什么特别的原因或意义吗?

2.这两个XML如何翻译成POJO?有什么区别。

3.XML中有什么保留字不能用吗?

4

2 回答 2

1

在很多情况下,将属性用于对象的属性,将子元素用于包含的对象,这很清楚。

一个示例是“文档样式”XML 应用程序,例如 XHTML。在:

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

p那么和之间的关系a是前者代表了一个文档元素,后者是其中的一部分,同时提供了更多关于和aboutclass的性质的信息。phrefa

这在非“文档样式”应用程序中也很有意义:

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

这里list包含数字 4、7 和 23,而presorted属性告诉 use 列表已经排序(因此如果需要排序,我们可以放弃自己排序的费用)。

有很多情况可以合理地使用其中任何一种,并且个人偏好通常会对 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 名称空间等。 ( xml:spacexml:lang和前缀是使用的示例) xmlnsxmlns:

(这是在 XML1.0 中,XML1.1 有稍微不同的规则来澄清一些奇怪的情况,但大多数情况下只有真正需要那些澄清规则的人需要)。

使用 XML 命名空间的应用程序进一步限制了上述内容,因为名称中只能有一个冒号 ( :),在这种情况下,左边的部分是标识使用的命名空间的命名空间前缀(如果不存在,则为默认命名空间) 并且右边的位(或者如果在默认名称空间中,则为整个)是本地名称。暗示,这禁止以冒号开头的名称。

即使您不使用命名空间,遵循这些限制也是一个好主意,这样您就可以与使用的技术兼容。

于 2012-06-27T10:39:04.320 回答
0

第一个是XML Attribute,第二个是XML Child Element。以下是一些讨论它们比较的链接:

在 w3schools.com 上

在 IBM developerworks 上

在 Stackoverflow 上

于 2012-06-27T10:14:52.073 回答