加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

@XMLRootElement与@XmlType

发布时间:2020-12-16 01:54:12 所属栏目:百科 来源:网络整理
导读:使用@XMLRootElement和@XMLType注释类之间有什么区别。我已经用@XMLType注释类,当结构将在XML模式中使用多次时,以及使用@XMLRootElement时,它将只使用一次 – 这是最好的方法吗? 一个不同但相关的问题,我会在这里包括。 @XMLType注释有一个propOrder属
使用@XMLRootElement和@XMLType注释类之间有什么区别。我已经用@XMLType注释类,当结构将在XML模式中使用多次时,以及使用@XMLRootElement时,它将只使用一次 – 这是最好的方法吗?

一个不同但相关的问题,我会在这里包括。 @XMLType注释有一个propOrder属性来指定它的元素以什么顺序出现 – 是否有一个等价的@XMLRootElement?

我使用这些注释与JAX-WS注释一起创建Web服务,如果这有什么区别。

XmlRootElement和XmlType之间的区别是范围界定的问题。记住这个注释只是指示用于生成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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读