【问题标题】:Append data after root element without loading the whole XML file into memory在根元素之后追加数据而不将整个 XML 文件加载到内存中
【发布时间】:2014-02-24 10:13:53
【问题描述】:

我必须输出一个可以包含使用数据量的 XML 文件,我正在使用 DOM 解析器来编写 XML 文件。也可以将数据附加到现有的 XML 文件中。

我的要求是向根元素添加数据。

是否可以在不读取整个 XML 文档的情况下追加数据(不将 XML 加载到内存中)?

示例数据:

当前 XML 文件:

<employees>
     <employee>
         <name>jon</name>
         <age> 22</age>
         <address> address1 </address>
     </employee>
</employees>

所需文件:

 <employees>
     <employee>
         <name>jon</name>
         <age> 22</age>
         <address> address1 </address>
     </employee>

      <employee>
         <name>jon1</name>
         <age> 24</age>
         <address> address2 </address>
     </employee>
</employees>

【问题讨论】:

  • 无论如何 - XML FILE 将被加载到内存中。

标签: java xml


【解决方案1】:

如果您不想将整个 XML 加载到内存中,那就很难了。

您可以通过操作原始字符串(子字符串等)来实现这一点 - 但我不推荐这样做。

或者您可以尝试使用 SAX 阅读器 http://www.saxproject.org/apidoc/org/xml/sax/XMLReader.html,它可以让您“随时随地”操作 XML。(很抱歉,虽然您可以使用 SAX 解析器来处理 XML 而无需读取它整个内容,你不能用它编辑)

编辑: 其次,您可以使用 SAX 解析器 复制 现有 XML,并将事件侦听器添加到例如root 你可以添加一个孩子。如果您关心的是内存(大 xml 文件),这可能是一个很好的解决方案。

【讨论】:

  • 如果我没记错 XMLReader 是用来读取 XML 文档的,我可以使用这个类来编辑或添加新元素到 XML
【解决方案2】:

您可以使用DOM4j 来执行此操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-22
    • 1970-01-01
    • 1970-01-01
    • 2021-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多