Axis2:从强类型响应类中提取显式XML?

时间:2009-10-13 09:29:17

标签: xml serialization axis2

我有一个基于Axis2的遗留Java Web服务。此Web服务类包括:

  • 服务接口(从WSDL生成);
  • 服务的实施(内部编写);
  • 一组自动生成的类似实体的类,代表请求和响应。

我还要求提取和缓存其中一个对XML的响应(最终作为格式良好的文档进入文件系统)。我一直在使用响应类的getOMElement()方法进行序列化,但无济于事。反序列化看起来更容易,因为生成的类都有一个Factory静态成员,它将获取XML并生成对象。

如何将强类型对象图的子集序列化为XML,生成的Axis2 Factory随后可以反序列化?

ps:我被Axis2困住了。是的,这很容易(比如说)xfire ...

1 个答案:

答案 0 :(得分:1)

为了完整起见,这是我最终提出的解决方案......

对象 - > XML(这不太好):

// in this case, response is the Axis2 generated class at the root
// of the webservice response
String xml = response.getOMElement(null, null).toString();

XML - >对象(只是稍微不那么不愉快):

// xml is the string we created earlier
XMLStreamReader reader = XMLInputFactory
                                .newInstance()
                                .createXMLStreamReader(new StringReader(xml));

// WebserviceResponse is the class generated by Axis2        
return WebserviceResponse.Factory.parse(reader); 

这些方法都不好,但至少它们是正常的(并且由严格的单元测试包围......)。