使用jaxb生成大型xml

时间:2012-05-14 13:06:02

标签: java xml jaxb2

我需要生成一个大的xml。我目前正在使用JAXB 2.0。

问题是如果我将所有对象保留在内存中并且生成堆空间用尽的可能性非常高。

我想知道如何做到这一点的最佳方法。

由于

2 个答案:

答案 0 :(得分:2)

您可以使用StAX来封送XML的外部主体,然后使用JAXB来编组重复的对象,而不必将它们全部存储在内存中。

请参阅此主题:http://glassfish.10926.n7.nabble.com/Marshalling-Large-data-into-xml-td55636.html

答案 1 :(得分:0)

我建议如下。

如何创建XML?我猜你首先要创建对象图,即在它们之间创建所有对象和依赖项。然后你打电话给这样的话:

JAXBContext.newInstance("YOUR PACKAGES LIST").marshal(rootObject, out);

JAXB以bean的形式访问您的对象,即使用getter。因此,您不必在编组之前创建完整的对象图。您只需提供getter的按需实现,以便他们能够根据请求获取对象。我相信它会帮助你减少内存消耗。

如果您不想在类中实现此按需机制,可以使用AspectJ或其他面向方面的库(或直接字节码修改库,如cglib或javassist)将按需检索代码注入到模型中对象。