2009-01-10 38 views
1

基本上,應用程序將Collection的內容寫入XML。我爲此使用XMLStreamWriter(XMLOutputFactory.newInstance().createXMLStreamWriter(...))。使用XMLStreamWriter附加到XML

工程很好,除了我無法得到如何將數據附加到現有文件的事實。不太喜歡先閱讀所有內容的想法,將數據附加在內存中,然後覆蓋。或者它是唯一的方法?

回答

2

如果你追加了一個頂級元素,你可能會逃避你想做的事情。例如,如果你有這樣的文件:

<some_element> 
    <nested_element> 
    ... 
    </nested_element> 
</some_element> 

你可以最有可能追加另一some_element元素脫身。

但是,如果有一個外層元素,你顯然會被擰緊,並且你必須附加一個內層級別的元素。舉例來說,假設你想一個some_element元素添加到該文件:

<data> 
    <some_element> 
    <nested_element> 
     ... 
    </nested_element> 
    </some_element> 
</data> 

一般情況下,你是好得多了重新分析文檔,然後對其進行改寫。如果它很小,則使用基於DOM的解析器;這很容易。如果文件很大,則使用基於SAX的文件。

3

只需附加到XML文件就會導致格式不正確的XML。您應該構建DOM並附加您需要的新元素。

+0

或者,如果它是一個非常大的文件,並且DOM會炸燬內存,請使用SAX/STAX /等​​。鍵入解析器將其讀入並寫入臨時文件,附加任何新數據,然後將臨時文件複製回舊文件。 – 2009-01-10 17:41:13