@XMLRootElement与@XmlType

前端之家收集整理的这篇文章主要介绍了@XMLRootElement与@XmlType前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
使用@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>

猜你在找的XML相关文章