Java を使用して xml を入力および出力するためのすべてのライブラリのうち、commons-digester が最適なツールである状況はどれですか?
3 に答える
ダイジェスターを使用する理由
Digester は、SAX xml パーサー API の上にあるレイヤーで、xml 入力の処理を容易にします。特に、digester を使用すると、xml 入力ファイルに基づいてオブジェクトのツリーを簡単に作成および初期化できます。
Digester の最も一般的な用途は、xml 形式の構成ファイルを処理し、その情報に基づいてオブジェクトのツリーを構築することです。
digester は真のオブジェクト、つまりアプリケーションのビジネス目標に関連し、実際の動作をするものを作成および初期化できることに注意してください。他の多くのツールには別の目的があります。入力 XML ドキュメント内のデータのモデルを構築することです。これは、W3C DOM が行うようですが、もう少し親しみやすいものです。
と
また、クラスを生成するツールとは異なり、最初にアプリケーションのクラスを記述し、後で Digester を使用して xml 入力ファイルからクラスを構築することを決定できます。その結果、クラスは、データを保持するだけの単純な「構造体」ではなく、たまたま xml ファイルから初期化される、実際の動作を備えた実際のクラスになります。
使用されていないものの例として:
ただし、入力 xml ドキュメントの直接的な表現を、実際のオブジェクトではなくデータとして探している場合、digester は適していません。DOM、jDOM、またはその他のより直接的なバインディング ツールがより適切です。
したがって、digester は XML を直接 Java オブジェクトにマップします。場合によっては、ツリーを読んでオプションを引き出すよりも便利です。
私の最初のテイクは「決して」ではありません...しかし、おそらくそれはその場所を持っています. eljenso が競合他社を凌駕したという意見に同意します。
したがって、効率的で単純なオブジェクトのバインディング/マッピングを行うには、JAXBまたはXStreamの方がはるかに優れています。はるかに便利で、さらに高速です。
EDIT 2019: また、Jackson XML、アプローチは JAXB に似ていますが、Jackson アノテーションを使用します
XML から「真の」オブジェクトを作成して初期化したい場合は、Spring が提供するような適切な Bean コンテナーを使用してください。
また、XML を読み込んで、XPath を使用して自分で処理するか、Castor などの Java/XML バインディング ツールを使用するのが適切であり、より標準的な方法かもしれません。
私は Struts を使用する際に Digester を使用してきましたが、その用途の可能性については他のツールやフレームワークに勝っているようです。