xml - 为什么 StreamingMarkupBuilder 在编写大型文档时比 MarkupBuilder 表现更好

标签 xml groovy markupbuilder streamingmarkupbuilder

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

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

最佳答案

据我所知,主要区别在于标识的开销。当流式编写器生成一行输出时,MarkupBuilder 会执行大量操作来生成 PrettyPrinted xml 字符串。

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

有同样的问题here ,但回答不太清楚。

从名字上看,我应该建议,Streaming 将直接在流中写入数据,而 Not-Streaming 版本 - 累积内存中的文档结构。但在StreamingMB的来源和 Ordinary MB我找不到核心区别,可以说,MB 正在存储不必要的数据。

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

关于xml - 为什么 StreamingMarkupBuilder 在编写大型文档时比 MarkupBuilder 表现更好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20217476/

相关文章:

Grails:如何在 GORM 中设置域类属性时执行操作

java - 策略模式

xml - 为什么没有 XMLNS 前缀的 XML 属性不等于具有相同本地名称的前缀属性?

java - 我想根据属性值选择评论节点

java - 使用 Jetty maven 插件部署 war

html - 如何使用 Groovy XML MarkupBuilder 创建有效的 HTML 脚本标签?

xml - 如何使用 Groovy MarkupBuilder 插入 xml 注释?

xml - 如何组织一个大的karaf blueprint.xml?

Java用持久化存储实现锁定机制

xml - 如何通过调用方法或闭包将节点添加到 Groovy Markup Builder 中的不同父节点