Java jaxb生成的ObjectFactory方法
我正在尝试创建web服务,但我遇到了两种情况 xsd文件有两种类型,第一种是:Java jaxb生成的ObjectFactory方法,java,xml,jaxb,xsd,Java,Xml,Jaxb,Xsd,我正在尝试创建web服务,但我遇到了两种情况 xsd文件有两种类型,第一种是: <xsd:element name="signupRequest"> <xsd:complexType> <xsd:sequence> <xsd:element name="name" type="xsd:string"/> <xsd:element nam
<xsd:element name="signupRequest">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="email" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element
<xsd:element name="signupResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="signup" type="tns:Signup"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:simpleType name="Signup">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Success"/>
<xsd:enumeration value="DuplicateEmail"/>
</xsd:restriction>
</xsd:simpleType>
但如果我直接这样设置signupresponse:
<xsd:element name="signupResponse">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Success"/>
<xsd:enumeration value="DuplicateMail"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
方法是:
@XmlElementDecl(namespace = "http://www.example.com", name = "signupResponse")
public JAXBElement<String> createSignupResponse(String value) {
return new JAXBElement<String>(_SignupResponse_QNAME, String.class, null, value);
@xmlementdecl(命名空间=”http://www.example.com,name=“signupResponse”)
公共JAXBElement createSignupResponse(字符串值){
返回新的JAXBElement(_SignupResponse_QNAME,String.class,null,value);
因此,请指导我如何为这些类型的xsd体系结构提供服务。元素
signupResponse
被认为是字符串的简单类型。class,因此您没有生成类
如果要生成枚举,应该更改XSD
<xs:element name="signupResponse" type="signupResponse" />
<xs:simpleType name="signupResponse">
<xs:restriction base="xs:string">
<xs:enumeration value="Success" />
<xs:enumeration value="DuplicateMail" />
</xs:restriction>
</xs:simpleType>
和对象工厂
@XmlElementDecl(namespace = "http://www.example.com", name = "signupResponse")
public JAXBElement<SignupResponse> createSignupResponse(SignupResponse value) {
return new JAXBElement<SignupResponse>(_SignupResponse_QNAME, SignupResponse.class, null, value);
}
@xmlementdecl(命名空间=”http://www.example.com,name=“signupResponse”)
公共JAXBElement createSignupResponse(SignupResponse值){
返回新的JAXBElement(_SignupResponse_QNAME,SignupResponse.class,null,value);
}
您解决了这个问题吗?如果您已经解决了,您是如何解决的?
<xs:element name="signupResponse" type="signupResponse" />
<xs:simpleType name="signupResponse">
<xs:restriction base="xs:string">
<xs:enumeration value="Success" />
<xs:enumeration value="DuplicateMail" />
</xs:restriction>
</xs:simpleType>
@XmlType(name = "signupResponse")
@XmlEnum
public enum SignupResponse {
@XmlEnumValue("Success")
SUCCESS("Success"),
@XmlEnumValue("DuplicateMail")
DUPLICATE_MAIL("DuplicateMail");
private final String value;
SignupResponse(String v) {
value = v;
}
public String value() {
return value;
}
public static SignupResponse fromValue(String v) {
for (SignupResponse c: SignupResponse.values()) {
if (c.value.equals(v)) {
return c;
}
}
throw new IllegalArgumentException(v);
}
}
@XmlElementDecl(namespace = "http://www.example.com", name = "signupResponse")
public JAXBElement<SignupResponse> createSignupResponse(SignupResponse value) {
return new JAXBElement<SignupResponse>(_SignupResponse_QNAME, SignupResponse.class, null, value);
}