如何使用Eclipse XSD编辑器创建枚举

时间:2012-09-14 19:48:52

标签: xsd wsimport

我正在为将在WSDL中使用的常见Web服务类型创建XSD。我需要的常见类型之一是枚举。

我的问题是当我执行wsimport时,生成的工件是一个类而不是枚举。

我正在使用Eclipse Indigo的XSD和WSDL编辑器。这就是我在设计模式下创建枚举的方法:

  1. 创建新的复杂类型(ResponseCodeType)
  2. 在ResponseCodeType
  3. 中添加新的字符串元素(代码)
  4. 在代码的constraints属性中,我添加了以下约束值:SUCCESS,WARNING,ERROR,FATAL
  5. 我做错了什么?

    XSD来源

    <complexType name="ResponseCodeType">
        <sequence>
            <element name="code">
                <simpleType>
                    <restriction base="string">
                        <enumeration value="SUCCESS"></enumeration>
                        <enumeration value="WARNING"></enumeration>
                        <enumeration value="ERROR"></enumeration>
                        <enumeration value="FATAL"></enumeration>
                    </restriction>
                </simpleType>
            </element>
        </sequence>
    </complexType>
    

    wsimport生成的工件的Java源代码

    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "ResponseCodeType", propOrder = {
        "code"
    })
    public class ResponseCodeType {
    
        @XmlElement(required = true)
        protected String code;
    
        /**
         * Gets the value of the code property.
         * 
         * @return
         *     possible object is
         *     {@link String }
         *     
         */
        public String getCode() {
            return code;
        }
    
        /**
         * Sets the value of the code property.
         * 
         * @param value
         *     allowed object is
         *     {@link String }
         *     
         */
        public void setCode(String value) {
            this.code = value;
        }
    
    }
    

1 个答案:

答案 0 :(得分:2)

我明白了。当我尝试设计我的枚举时,我创建了一个复杂类型,其元素具有我需要的约束(SUCCESS,INFO,WARN等)。

我所做的是创建一个带有约束(ResponseCode)的字符串元素的简单类型。然后我创建了一个带有ResponseCode元素的复杂类型(ResponseCodeType)。

当我执行wsimport时,它生成了ResponseCode作为枚举和ResponseCodeType类,并带有ResponseCode属性。

如果有人有更好的approch请评论或提供更好的答案。