代码之家  ›  专栏  ›  技术社区  ›  Dan Vinton

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

  •  1
  • Dan Vinton  · 技术社区  · 15 年前

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

    • 服务接口(由WSDL生成);
    • 服务的实施(内部书面);
    • 一组自动生成的实体类,表示请求和响应。

    我还需要提取和缓存对XML的一个响应的一部分(最终作为格式良好的文档转到文件系统)。我一直在和 getOMElement() 方法对响应类进行序列化,但无效。反序列化看起来更容易,因为生成的类都具有 Factory 将接收XML并生成对象的静态成员。

    如何将强类型对象图的子集序列化为XML,使生成的axis2 工厂 随后是否可以反序列化?

    附:我被轴卡住了。是的,这对Xfire来说很简单…

    1 回复  |  直到 15 年前
        1
  •  1
  •   Dan Vinton    15 年前

    为了完整性,这里是我最终提出的解决方案…

    对象->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); 
    

    这两种方法都不是很好,但至少它们是功能性的(并被严重的单元测试所包围…)。

    推荐文章