当我执行以下脚本时:
mb = new groovy.xml.StreamingMarkupBuilder()
mb.encoding = "UTF-8"
xmlClosure = {...} //BIG XML File building (at least 300 KB)
new OutputStreamWriter(new FileOutputStream(exportXmlFile), 'utf-8') << groovy.xml.XmlUtil.serialize(mb.bind(xmlClosure))
XML导出文件被截断了!!
如果相反,我执行以下命令:
new OutputStreamWriter(new FileOutputStream(exportXmlFile), 'utf-8') << mb.bind(xmlClosure)
然后,生成的文件符合预期,但不是xml格式。
所以我的问题是:
1-是处理大型XML流的
XmlUtil.serialize的错误,还是我需要在某个地方配置最大缓冲区?
2-您知道XML格式化
StreamingMarkupBuilder对象的解决方法吗? (欢迎使用代码示例)?
请您参考如下方法:
应该使用File#withWriter()方法来确保Writer正确关闭,而不是对Writer使用<<。




