xml结构中的歧义

xml结构中的歧义,xml,xml-parsing,Xml,Xml Parsing,我看到了这个XML: <amount type="downpayment"></amount> 我想知道为什么不这样做: <amount> <type>downpayment</type> </amount> 首期付款 1.为什么用方法1而不是方法2来写,有什么特别的原因或意义吗 2.如何将这两个XML转换为POJO?有什么区别呢 3.XML中任何不能使用的保留字?第一个是XML属性,第二个是XML

我看到了这个XML:

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

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

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

首期付款
1.为什么用方法1而不是方法2来写,有什么特别的原因或意义吗

2.如何将这两个XML转换为POJO?有什么区别呢


3.XML中任何不能使用的保留字?

第一个是
XML属性,第二个是
XML子元素。以下是一些关于它们比较的链接:


第一个是
XML属性
,第二个是
XML子元素
。以下是一些关于它们比较的链接:


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

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

<p class="warning"><a href="/helpAccountExpire">Your account has expired</a></p>
在这里,
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
xml
等)中,以
xml
开头的名称都保留用于核心xml技术,如xml本身、xml名称空间等。(
xml:space
xml:lang
xmlns
xmlns:
前缀就是使用的示例)

(在XML1.0中,XML1.1的规则略有不同,可以澄清一些奇怪的情况,但大多数情况下,只有真正需要这些澄清规则的人才需要这些规则)

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


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

在许多情况下,可以明确将属性用于对象的属性,将子元素用于包含的对象

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

<p class="warning"><a href="/helpAccountExpire">Your account has expired</a></p>
在这里,
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
xml
等)中,以
xml
开头的名称都保留用于核心xml技术,如xml本身、xml名称空间等。(
xml:space
xml:lang
xmlns
xmlns:
前缀就是使用的示例)

(在XML1.0中,XML1.1的规则略有不同,可以澄清一些奇怪的情况,但大多数情况下,只有真正需要这些澄清规则的人才需要这些规则)

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


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

好的,当转换为POJO时,两种方法之间有什么区别吗?这将取决于您使用什么将XML文档中包含的数据转换为java对象模型或从java对象模型转换为XML文档中包含的数据。好的,是吗这两种方法在转换为POJO时有什么区别吗?这将取决于您使用什么来转换