java - 从 JAX-WS 生成 XSD 时如何避免 XSD 序列?

标签 java xsd jax-ws sequence

当我注释了 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 文件中生成“序列”。

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

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

最佳答案

添加 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>

关于java - 从 JAX-WS 生成 XSD 时如何避免 XSD 序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4407746/

相关文章:

java - 如何将程序语句参数(例如 heightm)传递给其他方法?

java - 一种可以同时使用原始数据类型和泛型的方法?

xml - 在 XML 架构中使用实体 'constants'

Java SAX 解析器验证

java - JAXB 绑定(bind)文件 : validation error

java - 具有代理和身份验证的 WS 客户端

java - 将变量传递给java进程

java - 如何阻止数据库 Access .accdb 文件

java - 如何将 SOAP header 添加到 Spring Jax-WS 客户端?

java - 在 JAX-WS 客户端 .jar 中嵌入 Web 服务的 WSDL