【问题标题】:How can I avoide XSD sequence when generating XSDs from JAX-WS?从 JAX-WS 生成 XSD 时如何避免 XSD 序列?
【发布时间】:2011-05-23 09:45:12
【问题描述】:

当我注释了 java 类时

@javax.xml.bind.annotation.XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class UserdataType {

    String username;
    String street;
    String address;

它会生成到

<xs:complexType name="userdataType">
<xs:sequence>
<xs:element name="username" type="xs:string" minOccurs="0"/>
<xs:element name="street" type="xs:string" minOccurs="0"/>
<xs:element name="address" type="xs:string" minOccurs="0"/>

因此,默认情况下,JAX-WS 总是在 XSD 文件中生成“序列”。

这会迫使客户端注意元素的确切顺序,这在某些情况下没有帮助。

有没有办法生成与序列不同的东西?

【问题讨论】:

    标签: java xsd jax-ws sequence


    【解决方案1】:

    添加带有空propOrderXmlType 注释,如下所示:

     @XmlType(propOrder={})
    

    然后它会生成一个xs:all(它是无序的)而不是一个序列。

    <xs:complexType name="userdataType">
      <xs:all>
        <xs:element name="username" type="xs:string" minOccurs="0"/>
        <xs:element name="street" type="xs:string" minOccurs="0"/>
        <xs:element name="address" type="xs:string" minOccurs="0"/>
      </xs:all>
    </xs:complexType>
    

    【讨论】:

    • 现在如果反过来就好了。 xjc 正在生成一个固定的propOrder,即使输入文件使用&lt;all&gt; 而不是&lt;sequence&gt;
    猜你喜欢
    • 2013-02-21
    • 1970-01-01
    • 2011-04-23
    • 1970-01-01
    • 1970-01-01
    • 2014-06-07
    • 2016-04-19
    • 1970-01-01
    • 2012-02-16
    相关资源
    最近更新 更多