2

我在几个地方读到 StreamingMarkupBuilder 比 MarkupBuilder 更适合编写大型 XML 文档。但是,我一直无法找到一个明确的答案来解释为什么会这样。

有人可以解释为什么 StreamingMarkupBuilder 在编写大型文档方面比 MarkupBuilder 表现更好吗?

4

2 回答 2

1

正如我所看到的,主要区别在于标识的开销。当流式编写器生成单行输出时,MarkupBuilder 会执行很多操作来制作漂亮的 xml 字符串。

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

这里也有同样的问题,但回答的不是很清楚。

顾名思义,我应该建议,Streaming 将直接在流中写入数据,而 Not-Streaming 版本 - 累积内存中的文档结构。但是在StreamingMBOrdinary MB的源代码中,我找不到核心区别,可以说,MB 存储了不必要的数据。

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

于 2013-11-26T14:02:38.207 回答
1

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

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

希望能帮助到你

于 2013-11-28T18:06:15.247 回答