2012-02-15 3 views
0

でロードします。現在EMfを使用して〜400のXMLファイルを読み込みます。各ファイルは約100,000行あり、説明的なデータ(〜10%、IDのようなものと他の要素への参照)と実データ(〜90%、長い文字列/テキスト)で構成されています。部分的にxmlファイルをXMLBeansまたはEMF

私の問題は、私がOutOfMemoryExceptionsを取得するすべてのファイルを読むときです。これを解決する私のアイデア:IDなどをロードし、ユーザーが現在ロードされていないデータにアクセスしようとすると、バックグラウンドでロードされます。

これをEMFまたはXMLBeansでどのように実現するかについてのアイデアはありますか?

編集:

私のXMLは、この構造を有する:

<A> 
<B> 
    <C></C> 
    <C></C> 
</B> 
<B> 
    <C></C> 
</B> 
</A> 

私はどのような場合には、ルートノードをロードします。この例では、私は私のオブジェクトツリーは、大規模なXMLファイルの場合、この

A 
|-B 
\-B 
+0

アブサンド・マインド:約1週間で、あなたは1つの答えしか得ていません。私の答えを受け入れるか、あなたの質問を明確にして、より多くの回答を得るようにしてください。 –

答えて

0

のように見えるように、ノードCをスキップしたい、あなたは全体のファイルを読み込む代わりに、1のストリーミングXMLパーサーを使用してオフにはるかに優れていますすぐにそれからDOMを構築します。最新の最大の方法は、Sun/OracleのStaX (Streaming API for XML)を使用することです。また、SAXについて聞いたことがあります。

+0

興味のある要素に到達したら、 'XmlObject.Factory.parse(xmlStreamReader)'を使って、その場所からXmlBeanを作成することができます。 –

+0

良い点、ケビン。両方の長所。 –

+0

これが私の必要なものかどうかわからない –

関連する問題