XML生成のための最高のパフォーマンスソリューションは何ですか。
私の目標は、コードからいくつかの単純なXMLを構築することです。XMLBuilderの単純なカスタムStringBufferベースの実装を実装します。反対側からは、http://code.google.com/p/java-xmlbuilder/やhttp://code.google.com/p/xmltool/のようないくつかのライブラリがあります。これらは優れたDSLを備えていますが、パフォーマンスが不足していると思います。
私の目標は、優れたパフォーマンスを備えた十分に単純なXMLBuilderを構築することなので、カスタムソリューションを構築すると思います。それは特徴とします:
- XML構造用の優れたJavaベースのDSL(基本的にタグの追加)
- 優れたStringBufferベースのパフォーマンス。
- XMLタグを追加するときの文字列データエスケープ処理。
- 自動インデント
パフォーマンスの期待が間違っているかどうか、そしておそらく既製のライブラリを使用する方が良いかどうかを提案してください。
アップデート。標準のxmlビルダーのパフォーマンスがあまり良くないと思う理由。
標準のXMLビルダーはDocumentBuilderFactoryを使用し、舞台裏でクラスを操作します。また、これらのクラスはすべてのユーザーに合うように最適化されています。たとえば、名前空間のサポートなどは必要ありません。
<?xml version="1.0" encoding="utf-8">
<root>
<testdata>value</testdata>
</root>
</xml>
上記の非常に単純なXMLコードについて考えてみます。標準ツールを使用してビルドする場合、この単純なXMLを作成するためだけに非常に多くの作業が必要になります。Stringを使って自分で生成したほうがいいと思います。
更新2。パフォーマンス要件は、コードが単純なXMLを生成するために必要なだけ多くのことを実行する必要があることです。
更新3.素晴らしいコメントをありがとうございました!これで、必要なものがよくわかり、最初の目標が「パフォーマンス」という言葉で正しく設定されていなかったことがわかりました。私の本当の目標は、便利なDSLを備えたシンプルで十分なソリューションを使用して、XML構造を記述し、XML出力を生成することです。
XMLのDSLとしてプレーンJavaオブジェクトを使用し、非常に簡単なソリューションであるXStreamライブラリを使用してXMLを生成します。
更新4。JAXB。XStreamとJAXBについて説明したところ、JAXBの方がXStreamよりも高速であることがわかりました。さらに、プロジェクトですでにJAXBを使用しており、その標準のアノテーションが気に入っています。XStreamは、JAXBが今日ほど良くなかったときに元々大幅に開発されていたため、考えを変えて、今はJAXBを使用します。