我需要使用JAXB将大量数据输出到XML文件。我的问题是后续问题:
Can JAXB Incrementally Marshall An Object?
在Blaise Doughan的回答中,他说首先手动编写开始的xml标签,然后是重复的元素(必须是根元素),然后是结束标记。他的示例输出到控制台(System.out
)而不是文件。如果使用FileOutputStream
代替;在打开xml标记之前,确保将XML声明(<?xml version="1.0" encoding="UTF-8" standalone="true"?>
)写入文件的最佳方法是什么?我不认为最好的答案是手动编写它。
我回顾了以下答案:
How to stream large Files using JAXB Marshaller?
但是,我认为JAXB可以在不使用外部接口的情况下解决此问题。
答案 0 :(得分:1)
如果您的对象模型适合内存并且您有一个根对象,那么JAXB可以为您编组并写出XML声明。
另一方面,如果您有大量不适合内存的对象如果由单个根对象引用,那么您需要采取不同的方式。您需要直接使用StAX或OutputStream
/ Writer
启动文档,然后编组对象,然后自己结束文档。使用这种方法,您需要确保声明声明(StAX将为您处理)。