自定义Java XMLBuilder与基于标准类的

Vla*_*mir 5 java xml jaxp

什么是XML生成的最佳性能解决方案.

我的目标是从代码构建一些简单的XML.我将实现XML Builder的简单自定义StringBuffer实现.从另一方面,有几个库,如http://code.google.com/p/java-xmlbuilder/http://code.google.com/p/xmltool/,它有很好的DSL,但我觉得缺乏性能.

由于我的目标是构建简单的XMLBuilder并具有出色的性能,我想我将构建自定义解决方案.它将特色:

  • 用于XML构造的基于Java的良好DSL(基本上添加标签)
  • 伟大的基于StringBuffer的性能.
  • 添加XML标记时的字符串数据转义处理.
  • 自动缩进

请告知我是否对性能预期有误,并且可能更好地使用现成的库.

UPDATE.为什么我认为标准xml构建器的性能不是很好.

标准XML构建器使用Document Builder Factory并在后台使用类.这些类也经过优化以适合所有用户.例如,我不需要命名空间支持等.

<?xml version="1.0" encoding="utf-8">
<root>
 <testdata>value</testdata>
</root>
</xml>
Run Code Online (Sandbox Code Playgroud)

考虑上面非常简单的XML代码.如果使用标准工具构建,那么只需要制作这么简单的XML就可以完成很多工作.我认为最好是自己使用String生成它.

更新2.性能要求是代码应该尽可能多地生成简单的XML而不是更多.

更新3.感谢大家的好评!现在我更了解我需要什么,并且我的初始目标没有用"性能"这个词设置得非常正确.我的真正目标是使用方便的DSL来使用足够简单的解决方案来描述XML结构并生成XML输出.

我将使用普通的Java对象作为DSL的XML,并使用XStream库生成XML,这是非常简单的解决方案.

更新4. JAXB.我讨论了XStream vs JAXB,发现JAXB比XStream快.另外我已经在我的项目中使用了JAXB,我喜欢它的标准注释.我改变了主意,现在将继续使用JAXB,因为XStream最初是在JAXB不如今天那么好的时候开发的.

Sim*_*eon 4

我会建议一些非常有争议的东西,但仍然......

使用这两个库进行分析和性能测试。

如果您没有时间这样做,那么在我看来,假设某些事情很慢将是错误的选择。因为如果事实证明它实际上并不慢,那么使用已经构建和支持的库/框架将为您节省大量时间。

另一个想法。您将需要针对现有的解决方案来测试您已完成的高性能解决方案,以检查它是否真正具有高性能。因此,我强烈建议您在开始自己的库之前先测量可用库的性能。

  • @Vladimir,如果您没有时间进行分析,那么您也没有时间进行编码。寻求一种解决方案,将 SAX 事件生成到 Transformer 中以生成结果。 (4认同)
  • @Vladimir,如果你不测试它们,你可能会浪费时间。如果您没有现有的经验,您可能无法选择,目前这两个库就是这种情况。如果我可以打个比方,那就是你目前有选项A、B和C。你在不知道选项A和B是什么的情况下选择选项C。这可能最终会伤害你。如果您没有时间检查,那么就选择其中一个,因为现在有办法知道这是否是正确的选择。 (2认同)