gpt4 book ai didi

xml - @XMLRootElement 与 @XmlType

转载 作者:数据小太阳 更新时间:2023-10-29 01:37:34 28 4
gpt4 key购买 nike

@XMLRootElement@XMLType 注释类有什么区别。当结构将在 XML 模式中多次使用时,我一直使用 @XMLType 注释类,而当它仅使用一次时,我使用 @XMLRootElement 注释类 - 这是吗最佳方法?

我将在此处包括一个不同但相关的问题。 @XMLType 注释有一个 propOrder 属性来指定其元素出现的顺序 - @XMLRootElement 是否有等效项?

我将这些注释与 JAX-WS 注释结合使用来创建 Web 服务(如果有任何不同的话)。

最佳答案

XmlRootElementXmlType 之间的区别是范围问题。请记住,此注释只是指示创建用于生成 XML 的模式。 XmlRootElement 表示一个全局元素(具有匿名或模式类型):

<xs:element name=foo type="bar"> </xs:element> <-- schema type

虽然 XmlType 用于表示本地元素(具有匿名或复杂类型):

<xs:complexType name=bar> </xs:complexType> <-- complex type

此处本地/全局的主要区别在于您的对象将出现在架构的层次结构中,以及您声明的是架构类型还是复杂类型。这两个注释的文档都写得很好,包括示例:

XmlRootElement

XmlType

编辑:解决 propOrder 问题:如果您还声明了局部类型,则可以在全局元素上使用它:

@XmlRootElement (name="PersonElement")
@XmlType (propOrder={"firstname", "lastname"})
public class People{
@XmlElement
public String firstname;
public String lastname;
}

这将产生如下内容:

<xs:element name="PersonElement" type="People"/>
<xs:complexType name="People">
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>

关于xml - @XMLRootElement 与 @XmlType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11520724/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com