2014-10-20 46 views
0

我是JAXB的新手,希望有一点帮助。如何从同一对象模型编组/解组不同的xml

首先让我给你一点背景。

  1. 我有一个相对简单的对象模型,基于2个主要类:提供者和产品。现在提供者引用他可以提供的产品列表,并且产品引用可以提供它的提供者列表。那就是,我有循环引用!因为:a)我不希望被“类别”,“类型”等限制,但希望尽可能创建一个灵活的产品树。 b)我想通过相同的界面管理产品和树元素(所谓的“类别”)。正如我们现在所有,同样的抽象产品可以有许多不同的“物理实现”(例如:汽车是抽象产品,而丰田Yaris是实物产品)。因此,为了分离产品的抽象和物理实现,我实现了桥接模式。摘要产品现在是ProductTemplate(上述复合材料),物理产品是ProductImplementation。

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

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

目前,我正在做一些研究与JAXB,看它是否能满足我的需求:

  1. 我想元帅提供者,其所有ProductTemplate
  2. 我的列表想要编制一个ProductTemplate,其所有供应商名单

但是,这只是我需要的一个方面。我也希望能够从同一个类中生成不同版本的XML字符串。例如,从提供的对象,我希望能够集结含

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

    目前,我能够使用JAXB Anotations编组ProductTemplate,因为我已经将它们作为Provider类中的XmlTransient进行了排列。这是不够好的!

我不是要求在这一点上的代码的详细说明。我问的是:

  • JAXB能满足我的需求吗?
  • 如果是的话,请建议一种方法来做到这一点(我已经看到这篇文章回答了我的问题XSD for having 2 root elements (1 at a time)的一部分),特别是来自单个类的多个XML!
+0

大家好解释,因为我写了这个问题,我已经检查布莱斯Doughan的博客。在那里,您可以使用JAXB而不用注释来获得更大的灵活性。这可能非常符合我的需要。潜入JAXB ... – avi613 2014-10-23 09:45:42

+0

和MOXY/JAXB似乎meeeeeeeet我的需要! 我已经使用了xml-transient标签来使字段消失。 – avi613 2014-10-23 13:10:43

回答

0

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

我没有太多时间来详细说明,但诀窍在于使用绑定文件。您可以拥有与您想要的单个类相关的绑定文件数量。您只需将其链接到您的JAXBContext即可。

我没有发现它很容易使用,但它派上用Cyclick参考编组类时,方便。

希望它能帮助,希望我将有时间在更多的细节某一天:)