如何从同一对象模型编组/解组不同的xml

时间:2014-10-20 20:59:07

标签: java hibernate jaxb2

我是JAXB的新手,非常感谢您的帮助。

首先让我给你一些背景。

  1. 我有一个相对简单的对象模型,基于2个主要类:Provider和Product。现在,Provider引用了他可以提供的Product列表,Product引用了可以提供它的Provider列表。也就是说,我有循环引用!

  2. 产品是作为一种复合模式构建的,因为:a)我不想受到"类别","类型",...的限制,但是想要创建一个尽可能灵活的产品树。 b)我想通过相同的界面管理产品和树元素(所谓的"类别")。

  3. 就像我们现在一样,同一个抽象产品可以有许多不同的物理实现" (例如:汽车是抽象产品,而丰田雅力士是实物产品)。因此,为了分离Products的抽象和物理实现,我实现了桥接模式。 Abstract Products现在是ProductTemplate(上面提到的复合材料),物理产品是ProductImplementation。

  4. 我设法使用Hibernate(和Spring)对此进行建模。

    现在我想生成XML字符串,让后端和前端对话。

    目前,我正在与JAXB进行一些研究,以确定它是否符合我的需求:

    1. 我想使用其所有ProductTemplate
    2. 的列表封送提供商
    3. 我想用其所有提供商的列表
    4. 封送ProductTemplate

      但是,这只是我需要的一个方面。我还希望能够从同一个类生成不同版本的XML字符串。例如,从Provider对象,我希望能够编组包含

      的XML
      • 仅限其基本信息(姓名,地址,......)
      • 扩展信息(最后交付的产品,最后交付日期)
      • 完整的monty,也就是我在BD中关于他的一切。

        目前,我能够使用JAXB anotations封送ProductTemplate,因为我在Provider类中将它们分配为XmlTransient。这样做不够好!

      我现在没有要求提供代码的详细说明。我要问的是:

1 个答案:

答案 0 :(得分:0)

我发布这个问题已经有一段时间了,我在Blaise Doughan的博客和MOXy网站上找到了答案。

我没有太多时间详细说明,但诀窍是使用绑定文件。您可能拥有与单个类相关的任意数量的绑定文件。您只需将其链接到您的JAXBContext。

我发现它并不容易使用,但在使用cyclick引用编组类时它很方便。

希望它有所帮助,希望有一天我有时间详细解释:)