使用 StringBuilder 编写 XML vs XML 库

问题描述

通过阅读不同的线程,我已经了解到使用 StringBuilder 生成您自己的 XML 字符串是被人看不起的,但原因通常归结为转义字符。

我想知道是否有人对 XML 库和使用 StringBuilders 编写 XML 有经验,并知道编写可能是 2GB 数据的 XML 的性能是否有很大差异。需要了解的重要一点是,此 XML 将始终包含相同的 6 个元素,其中一个元素重复 n 次。这里的 n 可以是数千次。我们最担心的是使用 JaxB 等 Java 库生成非常大的 XML 时的性能。目前,我相信有人说性能是使用 JaxB 的大型 XML 文件的问题,但我想知道我们是否通过使用 StringBuilder 做出了正确的选择。有人有这方面的经验吗?

解决方法

不要为此使用 JAXB,而是使用允许您输出事件的序列化库,例如 startElement()、text()、endElement()。即使您在 StringBuilder 之上编写自己的库!性能成本可以忽略不计,您在调试中节省的时间将是无价的。而且您不会因为成为向您的客户发送格式错误的 XML 的人之一而感到尴尬,从而导致关于如何修复错误生成的 XML 的无数问题。