2009-01-10 101 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