0

現在、EMfを使用して最大400のxmlファイルを読み取っています。各ファイルには約100.000行があり、記述データ(〜10%、IDや他の要素への参照など)と実際のデータ(〜90%、長い文字列/テキスト)で構成されています。

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

EMFまたはXMLBeansでこれを実現する方法について何かアイデアはありますか?

編集:

私のXMLの構造は次のとおりです。

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

とにかくルートノードをロードしたい。この例では、ノードCをスキップして、オブジェクトツリーが次のようになるようにします。

A
|-B
\-B
4

1 に答える 1

0

大きな XML ファイルの場合は、ファイル全体を一度に読み取ってそこから DOM を構築するパーサーではなく、ストリーミング XML パーサーを使用する方がはるかに優れています。そのための最新かつ優れた方法は、Sun/Oracleの StaX (Streaming API for XML)を使用することです。SAXについても聞いたことがあるかもしれません。

于 2012-02-15T18:20:19.340 に答える