当我执行以下脚本时:

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使用<<。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!