如何从返回数据集的Web服务创建POJO(<object> any)

时间:2016-01-16 22:58:45

标签: java web-services soap jaxb wsdl

很抱歉,如果以下是愚蠢的问题,我尝试了很多网站以获得明确的回复,但由于我是网络服务的新手,我什么都听不懂。

我收到了一个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来存储响应。就我而言,我没有。

1 个答案:

答案 0 :(得分:0)

  • 向您的提供商咨询样本请求响应soap xml。
  • 将它从肥皂信封,头部,身体上剥下来
  • 您也可以剥离名称空间并将其放置为

    <someTag xmlns="">代替<xs:someTag>     其中xs =“给定名称空间”

  • 使用工具/ api如xsd generator将您的最低xml转换为pojo

  • 在SOAP协议中,标题和信封在生产中很少更改,因为它们主要包含命名空间和凭据。所以你可以编写一个辅助方法来在marshall / unmarshall期间追加/删除这些'SOAP组件'

这可以帮助您开始朝着正确的方向前进。