基本上,应用程序将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