为什么StreamingMarkupBuilder比MarkupBuilder更好地编写大型文档

时间:2013-11-26 12:45:56

标签: xml groovy markupbuilder streamingmarkupbuilder

我在几个地方读到StreamingMarkupBuilder比MarkupBuilder更适合编写大型XML文档。但是,我一直无法找到明确答案的原因。

有人可以解释为什么StreamingMarkupBuilder比MarkupBuilder更好地编写大型文档吗?

2 个答案:

答案 0 :(得分:1)

正如我所看到的,主要区别在于带有Identation的开销。当流编写器生成单行输出时,MarkupBuilder会制作很多动作来制作prettyPrinted xml字符串。

我认为,您可以提供IndentPrinter,从而最大限度地减少开销。

有同样的问题here,但答案不太明确。

通过名称,我应该建议,Streaming将直接在流中写入数据,而Not-Streaming版本 - 在内存文档结构中累积。但是在StreamingMBOrdinary MB的来源中,我找不到核心差异,可以说,MB存储了不必要的数据。

所以,我认为,缩进只是瓶颈。

答案 1 :(得分:1)

根据我的理解,streamingMarkupBuilder与MarkupBuilder有点像SAX与DOM:第二个在内存中加载文档的完整结构,第一个在文档到来时处理文档,在需要时加载文件位置,因为它被加载。

其他图像可能正在使用迭代器而不是使用整个列表。

希望有所帮助