我有一个基于Axis2的遗留Java Web服务。此Web服务类包括:
我还要求提取和缓存其中一个对XML的响应(最终作为格式良好的文档进入文件系统)。我一直在使用响应类的getOMElement()
方法进行序列化,但无济于事。反序列化看起来更容易,因为生成的类都有一个Factory
静态成员,它将获取XML并生成对象。
如何将强类型对象图的子集序列化为XML,生成的Axis2 Factory
随后可以反序列化?
ps:我被Axis2困住了。是的,这很容易(比如说)xfire ...
答案 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);
这些方法都不好,但至少它们是正常的(并且由严格的单元测试包围......)。