在根元素之后附加数据而不将整个XML文件加载到内存中

时间:2014-02-24 10:13:54

标签: java xml

我必须输出一个可以包含使用数据量的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>

2 个答案:

答案 0 :(得分:0)

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

你可以通过操纵原始字符串(子字符串等)来实现这一点 - 但我不建议这样做。

或者您可以尝试使用SAX阅读器http://www.saxproject.org/apidoc/org/xml/sax/XMLReader.html,这使您可以“随时随地”操作XML。(对不起,虽然您可以使用SAX解析器来处理XML而不用阅读其全部内容,您无法使用它进行编辑)

修改 第二,虽然你可以使用SAX解析器复制现有的XML,并通过添加事件监听器来实现。你可以添加一个孩子。如果您关注的是内存(大型xml文件),这可能是一个很好的解决方案。

答案 1 :(得分:-1)

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