Java 用の最高の XML パーサー [closed] 質問する

Java 用の最高の XML パーサー [closed] 質問する

比較的小さい (最大でも数 MB、UTF-8 でエンコードされた) XML ファイルを読み取り、さまざまな要素と属性を調べ、いくつかを変更して、XML を再びディスクに書き戻す必要があります (できれば、インデントされた適切な形式で)。

私のニーズに最適な XML パーサーは何でしょうか? 選択肢はたくさんあります。私が知っているもののいくつかは次のとおりです。

もちろん、JDK 内のものもです (私は Java 6 を使用しています)。Xerces はよく知っていますが、扱いにくいと感じています。

おすすめはありますか?

ベストアンサー1

特定のパーサー実装を考慮する必要はないと思います。XML 処理のための Java API準拠するパーサー実装を標準的な方法で使用できます。コードの移植性が大幅に向上し、特定のパーサーが古くなったことに気付いた場合は、コードの行を変更せずに別のパーサーに置き換えることができます (正しく実行した場合)。

基本的に、XML を標準的な方法で処理する方法は 3 つあります。

  • サックスこれは最もシンプルな API です。XML がシリアルに処理されるときに要素/属性内のデータを受け取る Handler クラスを定義して、XML を読み取ります。一部の属性/要素を読み取り、一部の値を書き戻すだけの場合 (このケース) は、より高速でシンプルです。
  • DOMこのメソッドは、ランダムに変更/アクセスできるオブジェクト ツリーを作成するため、複雑な XML の操作と処理に適しています。
  • スタックスこれは、SAX と DOM の間のパスの途中にあります。処理時に、関心のあるパーサーからデータを取得するコードを記述するだけです。

JDOMやApacheなどの独自のAPIは忘れてください(つまりApache Xerces XMLシリアライザー) は、時間の経過とともに進化したり、下位互換性を失ったりする可能性のある特定の実装に縛られるため、将来、JDOM または使用するパーサーの新しいバージョンにアップグレードするときにコードを変更する必要が生じます。Java 標準 API (ファクトリとインターフェイスを使用) に固執すると、コードはよりモジュール化され、保守しやすくなります。

提案されているパーサーはすべて (すべてを確認したわけではありませんが、ほぼ確実です) JAXP 実装に準拠しているので、技術的にはどれでもすべて使用できるということは言うまでもありません。

おすすめ記事