Как можно избежать последовательности XSD при генерации XSD из JAX-WS? - PullRequest
2 голосов
/ 10 декабря 2010

Когда у меня есть аннотированный 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.

Это заставляет клиентов заботиться о точном порядке элементов, что в некоторых случаях бесполезно.

Есть ли способ генерировать что-то отличное от последовательностей?

1 Ответ

2 голосов
/ 10 декабря 2010

Добавьте аннотацию XmlType с пустым propOrder, например:

 @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>
...