java - 将巨大的 XML 文件从 DOM 写入文件

标签 java xml dom

我有一个java程序,它查询一个有数百万条记录的表,并生成一个以每条记录为节点的xml。

挑战在于程序的堆内存不足。我为程序分配了 2GB 堆。

我正在寻找创建如此巨大的 xml 的替代方法。

我们可以将部分 DOM 对象写入文件并释放内存吗?
例如,在 DOM 对象中创建 100 个节点,写入文件,释放内存,然后在 DOM 中创建接下来的 100 个节点等

将节点写入文件的代码

DOMSource source = new DOMSource(node);
StreamResult result = new StreamResult(System.out);
transformer.transform(source, result);

但是将节点写入文件后如何释放 DOM 内存?

最佳答案

为什么需要生成 DOM?尝试直接编写XML。从 Java 输出 XML 的最方便的 API 是 StAX XMLStreamWriter 接口(interface)。 XMLStreamWriter 有许多实现可以生成词法(序列化)XML,其中包括 Saxon 序列化程序,如果需要,它可以让您对序列化方式(例如缩进和编码)进行相当大的控制。

关于java - 将巨大的 XML 文件从 DOM 写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22086664/

相关文章:

java.lang.UnsupportedClassVersionError : myApp : Unsupported major. 次要版本 51.0(无法加载类 myApp)在 Linux 上

java - 你好,我想打印我的列表,它在哪里是用户类对象。谁能帮我?

java - 使用 JDK 8 启动 Jenkins,无需更改系统 java_home

android - 设置自定义对话框的高度和宽度

java - 防止android中ringtonepreference的默认行为

javascript - Bootstrap 选项卡中的两个或多个 Flexslider2

java - 将 XML 文件中的子节点拆分为自己的 XML 文件

java - 获取列表项中当前 ID 的值

java - 公共(public)方法中的前置条件和后置条件检查

c# - Nuget nuspec 不适用于通配符