2011-12-27 5 views
1

1つのフォーマットから別のフォーマットに変換する必要がある巨大なXMLファイル(3000以上の固有ノード)があります。私の主な関心事は、スピードとメモリ使用量です。 StAXを使用して入力XMLをプログラム的に解析し、S​​tAXを使用してターゲットXMLを作成する以外に、XSLTの代替手段はありますか?XSLT以外のXML-to-XML変換の代替手段

STXプロジェクトがありますが、私はそれが維持されているとは思わないと思います。

+2

Saxon EEはストリーミングをサポートしています。 –

+4

3000ノードは「巨大」ではありません。効率に関しては、効率的なアルゴリズムの結果であり、プログラミング言語の選択ではありません。 O(N^3)アルゴリズムを実装するアセンブラ言語プログラムは、より効率的なアルゴリズムを実装するBasicプログラムよりも数千倍遅く実行されることが示されています - 正確な問題を定義し、 XSLTの効率的な実装。何を最適化する必要があるか考えていますか?クヌスを引用するには: "*早期最適化はすべての悪の根源*" –

+0

@MaxToroその素晴らしい提案をありがとう。 –

答えて

2

スピードとメモリの使用に懸念がある場合は、独自のSAXトランスを作成することができます。それが容易かどうかは、変換の複雑さに依存します。

つまり、3000ノードはそれほど多くはないと私はもっと大きな文書を変換するためにApache Cocoonを使用しました。そして、STXもうまくいきました。維持されていなくても必ずしも機能していないわけではありません。

既存のソリューションを試してみて、必要に応じて改善してください。

0

JDomは、JavaのXML構造を簡単にプログラムで操作するのに役立ちます。