由jaxb生成的ObjectFactory方法 [英] ObjectFactory methods generated by jaxb
问题描述
我正在尝试制作网络服务,但我有两种情况。
I am trying to make web services but there are two situations I am getting.
有两种类型的xsd文件,第一种是:
There are two types of xsd file 1st one is:
<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>
在这种情况下,jaxb生成signuprequest signupresponse和注册类,以便我可以轻松地提供服务,例如在这种情况下:
in that case jaxb generates signuprequest signupresponse and signup classes so i can easily make services for example in this case:
public Signup signupResponse(String name,String mobile);
但如果我像这样直接设置signupresponse:
but if I set signupresponse directly like this:
<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>
jaxb只生成sinuprequest类,不生成signupresponse和signup类,而是在ObjectFactory类中输入这个
jaxb only generate sinuprequest class and do not generate signupresponse and signup classes instead it makes entry in ObjectFactory class like this
private final static QName _SignupResponse_QNAME = new QName("http://www.example.com", "signupResponse");
,方法是:
@XmlElementDecl(namespace = "http://www.example.com", name = "signupResponse")
public JAXBElement<String> createSignupResponse(String value) {
return new JAXBElement<String>(_SignupResponse_QNAME, String.class, null, value);
所以请指导我如何为这些类型的xsd架构提供服务。
so please guide me how to make services for these types of xsd architecture.
推荐答案
元素 signupResponse
被视为 String.class的简单类型
,因此您没有生成类。
The element signupResponse
is considered as simple type of String.class
, for this reason you haven't a Class generates.
如果要生成枚举,则应更改XSD
If you want generated the enumeration you should change the 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>
为了生成
@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);
}
}
和ObjectFactory
and ObjectFactory
@XmlElementDecl(namespace = "http://www.example.com", name = "signupResponse")
public JAXBElement<SignupResponse> createSignupResponse(SignupResponse value) {
return new JAXBElement<SignupResponse>(_SignupResponse_QNAME, SignupResponse.class, null, value);
}
这篇关于由jaxb生成的ObjectFactory方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!