Java 生成的Axis类非常通用,希望为XML结果集成生成的JAX类

Java 生成的Axis类非常通用,希望为XML结果集成生成的JAX类,java,xml,xml-serialization,jaxb,axis2,Java,Xml,Xml Serialization,Jaxb,Axis2,我基于.NETSOAPWeb服务的WSDL使用ApacheAxis生成了许多类。为web方法生成的方法返回的结果类只有一些通用的org.apache.axis.message.MessageElement[]值。相反,我想要一个与web方法返回的XML完全对应的结果类。我使用JAX为我的一个web方法返回的XML创建了两个基于XSD的Java类,这些生成的类被注释并具有与我的XML匹配的属性: @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name

我基于.NETSOAPWeb服务的WSDL使用ApacheAxis生成了许多类。为web方法生成的方法返回的结果类只有一些通用的org.apache.axis.message.MessageElement[]值。相反,我想要一个与web方法返回的XML完全对应的结果类。我使用JAX为我的一个web方法返回的XML创建了两个基于XSD的Java类,这些生成的类被注释并具有与我的XML匹配的属性:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "content"
})
@XmlRootElement(name = "fields")
public class Fields {
    @XmlValue
    protected String content;

    @XmlAttribute(required = true)
    @XmlSchemaType(name = "anySimpleType")
    protected String parameters;

    public String getContent() {
        return content;
    }

    public void setContent(String value) {
        this.content = value;
    }

    public String getParameters() {
        return parameters;
    }

    public void setParameters(String value) {
        this.parameters = value;
    }
}
我现在尝试将JAX类(如上面的字段)集成到ApacheAxis生成的结果类中。我不知道该怎么办。Apache Axis生成的类具有以下可能有用的方法:

public static org.apache.axis.encoding.Serializer getSerializer(
        java.lang.String mechType, java.lang.Class _javaType,
        javax.xml.namespace.QName _xmlType) {
    return new org.apache.axis.encoding.ser.BeanSerializer(_javaType,
        _xmlType, typeDesc);
}
public static org.apache.axis.encoding.Deserializer getDeserializer(
        java.lang.String mechType, java.lang.Class _javaType,
        javax.xml.namespace.QName _xmlType) {
    return new org.apache.axis.encoding.ser.BeanDeserializer(_javaType,
        _xmlType, typeDesc);
}
我能否以某种方式将进入结果类构造函数的MessageElement[]作为其唯一参数,并根据如何使用@XmlRootElement等注释字段来填充a Fields实例?还是在基于.NETWSDL生成Apache Axis类时出错,导致生成的结果类如此通用

编辑:Michael的评论让我检查了WSDL,它在WSDL中有以下内容:类型:


这就是我看到的所有关于MyResult的内容,而complexType/sequence/any看起来非常通用。也许我需要对我的.NET web服务做更多的工作,然后用Axis生成Java类。

Michael关于检查WSDL的评论为我指明了正确的方向。我的两个web方法刚刚返回XmlDocument,因此WSDL对它们非常通用。我更改了web方法以返回带有[Serializable]属性的自定义类,现在WSDL更具体,因此Axis生成的代码更具体。

您有WSDL吗?从AXIS的生成过程中我使用的很少一点来看,它们确实是根据合同中定义的内容创建的,因此如果WSDL包含有问题的对象,它应该在那里。
<s:element name="MyResponse">
    <s:complexType>
        <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="MyResult">
                <s:complexType mixed="true">
                    <s:sequence>
                        <s:any/>
                    </s:sequence>
                </s:complexType>
            </s:element>
        </s:sequence>
    </s:complexType>
</s:element>