我有一些数据(大约 150-200 MB)需要转换成 XML 文件。我之前尝试过基于 DOM 来做,但是内存是一个很大的限制。
我开始查看 StaX 实现并有一些疑问。
可以说我有以下代码。
XMLStreamWriter writer = factory.createXMLStreamWriter(new FileWriter("output.xml"));
writer.writeStartDocument(" ");
writer.writeStartElement(" ");
writer.writeStartElement("");
// call method X a million times
writer.writeEndElement(" ");
writer.flush();
writer.close();
// method x
X() {
writer.writeStartElement(" ");
writer.writeEndElement();
}
我假设每当执行方法 X 时,它都会将元素写入文件。直到现在,这不会将转换后的 XML 保存在内存中。我对吗?
这会像前 2 个开始元素一样自动关闭未关闭的标签吗?
我可以刷新编写器并再次使用相同的编写器将更多的 xml 附加到文件中,如下所示:
X() { writer.writeStartElement(" "); writer.writeEndElement(); writer.flush(); }