我正在使用Spring WST并使用WCF SOAP 1.1 Web服务。我已经使用Apache的CXF Maven插件从WSDL生成Web服务客户端。当我检查生成的类时,它看起来已经被使用了JAXB,并且此时所有内容都是预期的。
但是,当我向Web服务发送请求时(通过Spring WST),响应对象使用Xerces ElementNSImpl来表示响应。
以下是发生什么事的一个例子;
在我看来,我需要在解组过程中明确强制使用JAXB但是我不确定这是否需要告诉Spring tenplate或其他地方。
有谁熟悉这个问题,有什么建议吗? 返回XML的示例
<?xml version="1.0" encoding="utf-8"?>
<PersonResponseObject xmlns="http://tempuri.org/">
<PersonResponseObjectResult>
<xs:schema xmlns="" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:xs="http://www.w3.org/2001/XMLSchema" id="NewDataSet">
<xs:element msdata:IsDataSet="true" msdata:UseCurrentLocale="true" name="NewDataSet">
<xs:complexType>
<xs:choice maxOccurs="unbounded" minOccurs="0">
<xs:element name="Table">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="ActivityName" type="xs:string" />
<xs:element minOccurs="0" name="ActivityDesc" type="xs:string" />
<xs:element minOccurs="0" name="Activityid" type="xs:int" />
<xs:element minOccurs="0" name="code" type="xs:string" />
<xs:element minOccurs="0" name="Status" type="xs:string" />
<xs:element minOccurs="0" name="PlanDate" type="xs:string" />
<xs:element minOccurs="0" name="Duedate" type="xs:string" />
<xs:element minOccurs="0" name="IsRequired" type="xs:unsignedByte" />
<xs:element minOccurs="0" name="ReqStatus" type="xs:int" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<diffgr:diffgram xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<NewDataSet xmlns="">
答案 0 :(得分:0)
这是一个疯狂的混合XML。它返回一些XML,其中嵌套了一个架构。这意味着XML内容是动态的,可能(谷歌搜索看起来像是返回任意关系数据库数据)。我怀疑你使用开箱即用的JAXB会有很多运气。至少,您需要将一些返回的模式保存到XML文件,然后为它们生成新的JAXB对象。