Web服务wsdl包含以下架构:
<xs:complexType name="DocumentSearchInfo">
<xs:sequence>
...
<xs:element minOccurs="0" name="Industries" nillable="true" type="tns:ListCondition">
<xs:annotation>
<xs:appinfo>
<DefaultValue EmitDefaultValue="false" xmlns="http://schemas.microsoft.com/2003/10/Serialization/" />
</xs:appinfo>
</xs:annotation>
</xs:element>
...
</xs:sequence>
</xs:complexType>
此代码是通过在NetBeans 6.7中添加Web引用生成的:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "DocumentSearchInfo", propOrder = {
"analysts",
"companyIDCondition",
"contributorCondition",
"countries",
"dateRange",
"documentIDCondition",
"documentPageCondition",
"industries",
"keywordCondition",
"languages",
"profileID",
"purchasedOnly",
"regions",
"researchCategories",
"researchProduct"
})
public class DocumentSearchInfo {
...
@XmlElementRef(name = "Industries", namespace = "http://somenshere", type = JAXBElement.class)
protected JAXBElement<ListCondition> industries;
...
}
,反过来,序列化为
<ns2:SearchInfo>
...
<ns2:ListCondition>
<ns2:Values>
<ns3:string>1385</ns3:string>
<ns3:string>1386</ns3:string>
</ns2:Values>
</ns2:ListCondition>
...
</ns2:SearchInfo>
我希望在这个XML中看到'Industries',而不是'ListCondition'。
使用.net使用此服务没有任何问题:无论使用哪种序列化程序,svcutil和wsdl.exe都能正常工作,但看起来我完全错过了有关Java中序列化的明显信息。
有人可以帮忙吗?
答案 0 :(得分:1)
解决。我应该调用ObjectFactory的createDocumentSearchInfoIndustries方法。与我以前在.net中的习惯非常不同