2014-02-07 114 views
2

我需要使用JAXB將大量數據輸出到XML文件。我的問題是後續問題:使用JAXB_FRAGMENT屬性時,是否需要輸出XML聲明?

Can JAXB Incrementally Marshall An Object?

在布萊斯Doughan的回答,他說先手動編寫的開放XML標籤其次是重複的元素(必須是根元素),然後關閉標籤。他的例子輸出到控制檯(System.out)而不是文件。如果使用FileOutputStream代替;什麼是確保XML聲明(<?xml version="1.0" encoding="UTF-8" standalone="true"?>)的最佳方法是在打開xml標籤之前寫入文件?我不認爲最好的答案是手動編寫它。

我回顧了以下的答案:

How to stream large Files using JAXB Marshaller?

不過,我倒覺得JAXB將有辦法解決這個問題,而無需使用外部接口這樣做。

回答

1

如果你的對象模型適合內存,並且你有一個根對象,那麼JAXB可以編組,如果你寫出XML聲明。

如果另一方面,你有大量的對象不適合內存如果由一個根對象引用,那麼你需要做不同的事情。您需要直接使用StAX或OutputStream/Writer自己啓動文檔,然後按照自己結束文檔的方式編組對象。通過這種方法,您需要確保聲明被寫出(StAX將爲您處理)。

相關問題