基本上,應用程序將Collection的內容寫入XML。我爲此使用XMLStreamWriter(XMLOutputFactory.newInstance().createXMLStreamWriter(...)
)。使用XMLStreamWriter附加到XML
工程很好,除了我無法得到如何將數據附加到現有文件的事實。不太喜歡先閱讀所有內容的想法,將數據附加在內存中,然後覆蓋。或者它是唯一的方法?
基本上,應用程序將Collection的內容寫入XML。我爲此使用XMLStreamWriter(XMLOutputFactory.newInstance().createXMLStreamWriter(...)
)。使用XMLStreamWriter附加到XML
工程很好,除了我無法得到如何將數據附加到現有文件的事實。不太喜歡先閱讀所有內容的想法,將數據附加在內存中,然後覆蓋。或者它是唯一的方法?
如果你追加了一個頂級元素,你可能會逃避你想做的事情。例如,如果你有這樣的文件:
<some_element>
<nested_element>
...
</nested_element>
</some_element>
你可以最有可能追加另一some_element
元素脫身。
但是,如果有一個外層元素,你顯然會被擰緊,並且你必須附加一個內層級別的元素。舉例來說,假設你想一個some_element
元素添加到該文件:
<data>
<some_element>
<nested_element>
...
</nested_element>
</some_element>
</data>
一般情況下,你是好得多了重新分析文檔,然後對其進行改寫。如果它很小,則使用基於DOM的解析器;這很容易。如果文件很大,則使用基於SAX的文件。
只需附加到XML文件就會導致格式不正確的XML。您應該構建DOM並附加您需要的新元素。
另一種方法是構建一個新的XML文件,然後通過XSLT transformations與前一個合併。要應用XSLT樣式表,您應該使用Java XML Transformation API。
或者,如果它是一個非常大的文件,並且DOM會炸燬內存,請使用SAX/STAX /等。鍵入解析器將其讀入並寫入臨時文件,附加任何新數據,然後將臨時文件複製回舊文件。 – 2009-01-10 17:41:13