很抱歉,如果以下是愚蠢的问题,我尝试了很多网站以获得明确的回复,但由于我是网络服务的新手,我什么都听不懂。
我收到了一个WSDL文件,该文件查找服务器并以下面的格式返回响应
<soap:envelop>
...
..
<Aresponse>
<XXXDAtaset>
<xs:schema>
<xs:element>
<xs:choice>
.....
.....(Elements are here)
</xs:choice>
</xs:element>
</xs:schema>
</XXXDAtaset>
<diffgr:diffgram>
<dataset rows>
-- values are here
</dataset rows>
</diffgr:diffgram>
</Aresponse>
..
</soap:envelop>
我没有任何POJO来存储这些值(从WSDL创建客户端时甚至没有创建POJO)。初始WSDL对此响应有<s:any>
。
如何为此SOAP消息创建POJO?我不知道是否必须要求WSDL提供程序或任何可用的JAXB工具为此生成POJO。
我尝试了这个链接How to create java object from 'anyType' returned from service using JAXB?,但似乎他们已经有了一些POJO来存储响应。就我而言,我没有。
答案 0 :(得分:0)
您也可以剥离名称空间并将其放置为
<someTag xmlns="">
代替<xs:someTag>
其中xs =“给定名称空间”
使用工具/ api如xsd generator将您的最低xml转换为pojo
在SOAP协议中,标题和信封在生产中很少更改,因为它们主要包含命名空间和凭据。所以你可以编写一个辅助方法来在marshall / unmarshall期间追加/删除这些'SOAP组件'
这可以帮助您开始朝着正确的方向前进。