膨大な量のデータがある場合は、大量のメモリを使用し、IOと処理が重複しないため、すべてを一度にメモリにロードする必要がありません。残念ながら、DOMとDOMのようなライブラリ(DOM4Jのような)の大半はそうしていると思いますので、膨大な量のXMLを効率的に処理するのには適していません。
代わりに、SAXやStAXなどのストリーミングAPIを使用してください。 StAXは、私の経験上、通常は使いやすくなっています。
SAXのパフォーマンスでDOMの利便性を提供する他のAPIがあります。 Javolutionは1つかもしれません。 VTD-XMLが別です。しかし、正直言って、私はStAXを使うのがとても簡単です。基本的には派手なストリームなので、ストリームからテキストファイルを読み込んでいるのと同じように考えることができます。
JAXBをStAXと組み合わせることを試してみてください。その考え方は、StAXを使用してファイルをストリーミングし、次にJAXBを使用してその中のチャンクを整列解除するというものです。たとえば、Atomフィードを処理していた場合は、それを開いてヘッダーを読み取ってから、ループしてentry
の要素を一度に1つずつオブジェクトにアンマーシャリングすることができます。これは、あなたのフォーマットがAtomのような独立した要素のシーケンスで構成されている場合にのみ実際に動作します。 XHTMLのようなより豊かなものでは大して役に立たないでしょう。 JAXB reference implementationとa guy's blog postに例を見ることができます。
各APIには弱点と長所があります。この強みは、通常、別のAPIの弱点を修正することによって引き起こされます。あなたが必要とする強みはどれですか? –