【问题标题】:Appending to XML with XMLStreamWriter使用 XMLStreamWriter 附加到 XML
【发布时间】:2010-09-30 16:30:32
【问题描述】:

基本上,应用程序将 Collection 的内容写入 XML。为此,我正在使用 XMLStreamWriter (XMLOutputFactory.newInstance().createXMLStreamWriter(...))。

除了我不知道如何将数据附加到现有文件之外,效果很好。不太喜欢先读取所有数据,将数据附加到内存然后覆盖的想法。还是只有这样?

【问题讨论】:

    标签: java xml


    【解决方案1】:

    如果您要附加一个顶级元素,您可能可以随心所欲地做自己想做的事。例如,如果你有这个文件:

    <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 的文件。

    【讨论】:

      【解决方案2】:

      另一种方法是构建一个新的 XML 文件,然后通过 XSLT transformations 将其与前一个文件合并。要应用 XSLT 样式表,您应该使用 Java XML Transformation API。

      【讨论】:

        【解决方案3】:

        简单地附加到 XML 文件将导致 XML 格式错误。您应该构建 DOM 并附加您需要的新元素。

        【讨论】:

        • 或者如果它是一个非常大的文件并且 DOM 会炸毁内存,请使用 SAX/STAX/等。键入 parser 将其读入并将其写入临时文件,附加任何新数据,然后将临时文件复制回旧文件。
        • @Phil 谢谢。我绝对是指“有意地”附加,而不是把模式搞砸。 @Marc 是的,这就是我目前正在做的事情。 :)
        猜你喜欢
        • 2013-09-02
        • 1970-01-01
        • 2021-08-30
        • 2011-07-07
        • 2020-11-08
        • 2013-04-30
        • 1970-01-01
        • 1970-01-01
        • 2013-05-13
        相关资源
        最近更新 更多