【发布时间】:2010-09-30 16:30:32
【问题描述】:
基本上,应用程序将 Collection 的内容写入 XML。为此,我正在使用 XMLStreamWriter (XMLOutputFactory.newInstance().createXMLStreamWriter(...))。
除了我不知道如何将数据附加到现有文件之外,效果很好。不太喜欢先读取所有数据,将数据附加到内存然后覆盖的想法。还是只有这样?
【问题讨论】:
基本上,应用程序将 Collection 的内容写入 XML。为此,我正在使用 XMLStreamWriter (XMLOutputFactory.newInstance().createXMLStreamWriter(...))。
除了我不知道如何将数据附加到现有文件之外,效果很好。不太喜欢先读取所有数据,将数据附加到内存然后覆盖的想法。还是只有这样?
【问题讨论】:
如果您要附加一个顶级元素,您可能可以随心所欲地做自己想做的事。例如,如果你有这个文件:
<some_element>
<nested_element>
...
</nested_element>
</some_element>
附加另一个some_element 元素很可能会成功。
但是,如果有一个外层元素,你显然会被搞砸,你必须附加一个 inner 层元素。例如,假设您想在此文件中添加 some_element 元素:
<data>
<some_element>
<nested_element>
...
</nested_element>
</some_element>
</data>
一般来说,最好先重新解析文档,然后再重写。如果它很小,请使用基于 DOM 的解析器;这更容易。如果文件很大,请使用基于 SAX 的文件。
【讨论】:
另一种方法是构建一个新的 XML 文件,然后通过 XSLT transformations 将其与前一个文件合并。要应用 XSLT 样式表,您应该使用 Java XML Transformation API。
【讨论】:
简单地附加到 XML 文件将导致 XML 格式错误。您应该构建 DOM 并附加您需要的新元素。
【讨论】: