我需要将记录列表(java objs)转换为XML输出。 XML模式可以根据请求类型进行更改,并且xml输出需要采用基于请求参数的不同元素的不同格式(例如,请求A - >生成格式为A <A><aa>name</aa></A>
的xml请求B - &gt;格式B <B><bab>name</bab></B>
)。现有框架使用JAXB,但数据对象与一个XML模式紧密耦合。
我们正在尝试重构以使其灵活,以便基于请求类型,我们可以生成不同的xml输出。即相同的数据 - &gt;多种输出格式。我们还期待更多的xml架构,因此我们需要保持灵活性。
感谢您能否告诉我哪种框架最适合此类情景。对于大型模式和数据文件,什么是一个很好的解决方案。 谢谢!
答案 0 :(得分:0)
因此,您拥有域模型和一个或多个集成模型(输出格式)。我假设,当您创建响应(集成模型)时,您使用来自域模型的某种适配器(如果没有,您应该考虑这一点)。我会以这种方式保留多种集成模型(响应类型/输出格式)。
对于每种响应类型,都有一个专用的集成模型(例如,从XSD生成它,例如使用JAXB),并具有从您的域模型到此集成模型的适配器。 然后,根据请求类型,选择一个适配器并生成响应。
如果您希望它真的具有前瞻性,您应该考虑为应用程序拥有自己的集成模型。这将阻止您在域模型更改时更改适配器,如下所示:
域模型 - &gt; [trafo] - &gt;通用集成模型 - &gt; [trafos] - &gt;第三方集成模型
顺便说一句,转换器不需要在一种特定技术中实现,使用最适合特定情况的转换器。一个适配器可以使用JAXB生成的Java类,其他适配器可以是XML转换。
您可以考虑使用Apache Camel等框架实现集成层。