我看到了这个 XML:
<amount type="downpayment"></amount>
我想知道为什么不这样做:
<amount>
<type>downpayment</type>
</amount>
1.用方法1而不是方法2写有什么特别的原因或意义吗?
2.这两个XML如何翻译成POJO?有什么区别。
3.XML中有什么保留字不能用吗?
我看到了这个 XML:
<amount type="downpayment"></amount>
我想知道为什么不这样做:
<amount>
<type>downpayment</type>
</amount>
1.用方法1而不是方法2写有什么特别的原因或意义吗?
2.这两个XML如何翻译成POJO?有什么区别。
3.XML中有什么保留字不能用吗?
在很多情况下,将属性用于对象的属性,将子元素用于包含的对象,这很清楚。
一个示例是“文档样式”XML 应用程序,例如 XHTML。在:
<p class="warning"><a href="/helpAccountExpire">Your account has expired</a></p>
p
那么和之间的关系a
是前者代表了一个文档元素,后者是其中的一部分,同时提供了更多关于和aboutclass
的性质的信息。p
href
a
这在非“文档样式”应用程序中也很有意义:
<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
以任何大写 (XML
等xMl
) 开头的名称都保留用于核心 XML 技术,例如 XML 本身、XML 名称空间等。 ( xml:space
、xml:lang
和前缀是使用的示例) xmlns
。xmlns:
(这是在 XML1.0 中,XML1.1 有稍微不同的规则来澄清一些奇怪的情况,但大多数情况下只有真正需要那些澄清规则的人需要)。
使用 XML 命名空间的应用程序进一步限制了上述内容,因为名称中只能有一个冒号 ( :
),在这种情况下,左边的部分是标识使用的命名空间的命名空间前缀(如果不存在,则为默认命名空间) 并且右边的位(或者如果在默认名称空间中,则为整个)是本地名称。暗示,这禁止以冒号开头的名称。
即使您不使用命名空间,遵循这些限制也是一个好主意,这样您就可以与使用的技术兼容。
第一个是XML Attribute
,第二个是XML Child Element
。以下是一些讨论它们比较的链接: