2010-11-19 13 views
0

私のアプリケーションで大きなXMLファイル(〜1〜2M)を解析しています。場合によっては、一部のファイルを解析するときにパーサーがエラー に失敗することがあります。XMLパーザでは、Android上で大規模なXMLファイルの解析に失敗することがあります。

症状:

  1. 時には同じファイルが正常に解析され、時には - ではありません。
  2. ファイルの解析に失敗した場合、ファイルを解析するまでに少し時間がかかります もう一度正常に実行されます。
  3. SAX(XMLReader)とPull(XMLPullParser)の2種類のXMLパーサー、 を使用していますが、どちらもファイル内の同じ場所で失敗します。
  4. 私は、パーサーの入力ソースとしてFileInputStreamを使用します。
  5. 同じファイルがzipで圧縮され、ZipFile.getInputStream経由で開かれます。 (ほとんど)は常に正常に解析されました。
  6. FileInputStreamをBufferedInputStreamでラップしようとしましたが、何も変更されませんでした。
  7. 解析が失敗した場合、次のファイルの解析はファイルの同じ場所で失敗します。

私は2つの原因があることができると信じて:

  1. のFileInputStream間違って動作します。
  2. FileInputStreamのXMLパーサーが正しく動作しません(私は両方のパーサーがAndroidの同じベースに実装されていると聞いています)。

問題を解決するか、回避策を助けてください。

ありがとうございました。

+0

どのように失敗しますか?エラーログ(タイムアウト)? –

+0

これは、行のパーサー例外です:XML解析エラーが発生する列。 –

+0

コードのメモリ使用量を確認してください。ヒープサイズが16Mに達している可能性があります。ヒープではなくメモリを返します:Runtime.getRuntime()。totalMemory(); Runtime.getRuntime()。maxMemory(); Runtime.getRuntime()。freeMemory(); – Pentium10

答えて

1

この問題は、ときどき問題が発生する場合に当てはまります。アプリケーションを実行するたびに問題が発生した場合は、XMLに問題がある可能性があります。

私の場合、私のアプリケーションのユーザーの誰も同じ問題を報告していないので、私はそれがデバイス(私はサムスンI5700)またはsdcardの問題だと思う。

私はアンドロイドでsdcardを再フォーマットするか、別のものを購入しようとします。

関連する問題