将JAXB-Objects存储到多个XML文件中

时间:2014-09-02 14:53:01

标签: java xml jaxb xsd

情况

我获得了多个XSD文件A.xsdB.xsdC.xsd,它们使用IDREFID通过XInclude引用彼此的元素而没有循环依赖。 A.xsd是我在层次结构中的根文件。

使用XJB和绑定文件,我管理它以从XSD生成一致的Java代码。

成功创建Java对象abc后,我正在尝试将它们编组为XML文件。这就是我被卡住的地方。

问题

a封送到文件a.xml时,bc无处存储,a.xml不包含对它们的引用。

如何成功存储所有对象和引用?

途径

我手头有以下方法,但它们不可变

  • 直接在b中包含ca.xsd的类型,而不是使用IDREF。不起作用,因为我最后想要多个XML文件。
  • 编写Java代码以浏览a对象,并查找bc的所有实例。然后完全封送所有bc s并使用XInclude来引用生成的文件。这似乎是不合适的,因为我不希望我的存储机制知道所有类的所有内部。我只想存储我的a,JAXB编组应尽可能自己存储依赖项。

可比较的问题和Anwsers

以下问题与此问题有关,因为他们希望生成多个XML文件。但是他们都没有考虑XSD文件和XJC绑定文件中给出的信息,因此需要操纵生成的java代码,一些非平凡的编程开销和某种信息重复。

1 个答案:

答案 0 :(得分:2)

@XmlID& @XmlIDREF用于促进单个XML文档中的引用。

如果您有一个从多个XML模式生成的模型到多个包中,那么您需要确保创建JAXBContext以了解所有这些类。一种方法是在包名称的冒号分隔JAXBContext上创建String

JAXBContext.newInstance("com.example.pkg1:com.example.pkg2:com.example.pkg3");