我使用基于 WSDL 的 Apache Axis 为 .NET SOAP Web 服务生成了很多类。为 Web 方法生成的方法返回Result
仅具有一些通用org.apache.axis.message.MessageElement[]
值的类。相反,我想要一个Result
与 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 类(Fields
如上)集成到Result
Apache Axis 生成的类中。我不知道该怎么做。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[]
进入我的类构造函数(它的唯一参数)中,并根据注释方式Result
等填充 a实例吗?还是在基于我的 .NET WSDL 生成 Apache Axis 类时出现问题,导致生成的类如此通用?Fields
Fields
@XmlRootElement
Result
编辑:迈克尔的评论让我检查了 WSDL,它有这个wsdl:types
:
<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>
这就是我看到的所有提及MyResult
,而且complexType
/ sequence
/any
看起来很一般。也许我需要用我的 .NET Web 服务做更多的事情,然后用 Axis 生成 Java 类。