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

标签 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>

最佳答案

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

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

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

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

关于java - 在根元素之后追加数据,而不将整个 XML 文件加载到内存中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21984686/

相关文章:

java - 从堆栈中获取前 5 个数据

xml - Worldpay 直接 XML

c# - 如何将字符串转换为 XML 格式

java - 从映射填充 Java 对象的方法

java - 为Jbutton的图标设置不同的背景颜色

使用 GridLayout 的 Java 问题

java - 如何修复我的代码中的错误 'Concurrent Modification Exception'

java - 如果第一个接口(interface)定义了实现类,为什么我不能将它用作另一个接口(interface)中的参数?

java - 使用编辑文本在 toast 中进行简单的倒计时

java - 在 java 中解析 xml 时,跳过元素的反序列化并以字符串形式获取整个内容