0
私のアプリケーションで大きなXMLファイル(〜1〜2M)を解析しています。場合によっては、一部のファイルを解析するときにパーサーがエラー に失敗することがあります。XMLパーザでは、Android上で大規模なXMLファイルの解析に失敗することがあります。
症状:
- 時には同じファイルが正常に解析され、時には - ではありません。
- ファイルの解析に失敗した場合、ファイルを解析するまでに少し時間がかかります もう一度正常に実行されます。
- SAX(XMLReader)とPull(XMLPullParser)の2種類のXMLパーサー、 を使用していますが、どちらもファイル内の同じ場所で失敗します。
- 私は、パーサーの入力ソースとしてFileInputStreamを使用します。
- 同じファイルがzipで圧縮され、ZipFile.getInputStream経由で開かれます。 (ほとんど)は常に正常に解析されました。
- FileInputStreamをBufferedInputStreamでラップしようとしましたが、何も変更されませんでした。
- 解析が失敗した場合、次のファイルの解析はファイルの同じ場所で失敗します。
私は2つの原因があることができると信じて:
- のFileInputStream間違って動作します。
- FileInputStreamのXMLパーサーが正しく動作しません(私は両方のパーサーがAndroidの同じベースに実装されていると聞いています)。
問題を解決するか、回避策を助けてください。
ありがとうございました。
どのように失敗しますか?エラーログ(タイムアウト)? –
これは、行のパーサー例外です:XML解析エラーが発生する列。 –
コードのメモリ使用量を確認してください。ヒープサイズが16Mに達している可能性があります。ヒープではなくメモリを返します:Runtime.getRuntime()。totalMemory(); Runtime.getRuntime()。maxMemory(); Runtime.getRuntime()。freeMemory(); – Pentium10