Java WSDL表示中的枚举类型
WSDL表示形式如下所示:Java WSDL表示中的枚举类型,java,wsdl,Java,Wsdl,WSDL表示形式如下所示: <xs:simpleType name="customerType"> <xs:restriction base="xs:string"> <xs:enumeration value="PRIVATE"/> <xs:enumeration value="BUSINESS"/> </xs:restriction> </xs:simpleType> 可
<xs:simpleType name="customerType">
<xs:restriction base="xs:string">
<xs:enumeration value="PRIVATE"/>
<xs:enumeration value="BUSINESS"/>
</xs:restriction>
</xs:simpleType>
可以在WSDL中表示为:
我们如何在WSDL中表示enum,以便cxf codegen插件可以生成如下代码:
public enum CustomerType {
PRIVATE{public BigInteger getNcid() {
return new BigInteger("1");
},
BUSINESS{public BigInteger getNcid() {
return new BigInteger("2");
}
public abstract BigInteger getNcid();
}
如果我们不能让cxf codegen生成此代码,那么在java中处理此情况的最佳方法是什么。我真的很感谢你的帮助。这不是一回事 您还没有说您正在使用哪种编程语言,但看起来您希望PRIVATE与值1关联,而BUSINESS与值2关联。WSDL中没有表示的
WSDL使用XML模式来描述数据的形状。XML模式没有与编程语言中的
enum
等效的概念。在我所知道的大多数编程语言中,enum
是一个命名常量。XML模式中的枚举
方面没有描述命名值。它只是说,此时的值可以是列出的(字符串)值之一。您好,John感谢您的解释,我实际上是在尝试使用cxf codegen插件从java中的WSDL生成代码,我没有看到生成上述代码的方法。您知道让codegen实现与其关联的枚举值的任何方法吗?不知道,因为XML架构中不存在枚举的Java概念。感谢John的澄清您可以找到4种方法在wdsl中创建枚举,以及它们如何与CXF一起工作:
public enum CustomerType {
PRIVATE{public BigInteger getNcid() {
return new BigInteger("1");
},
BUSINESS{public BigInteger getNcid() {
return new BigInteger("2");
}
public abstract BigInteger getNcid();
}