私のアプリはGPXファイル(XML)をインポートしてから、すばらしいXML Dictionaryライブラリを使ってXMLとGPXを解析するという素晴らしい仕事をしていますが、私が試してみたいと考えている85MBのファイル。それは巨大な16,000以上のGPXウェイポイントを含んでいます。巨大なXMLファイルを解析する方法
現在、私はNSURL
をNSData
に読み込み、パーサを使用しています。しかし、大きなファイルで試してみると、メモリの警告とクラッシュが発生します。
メモリエラーが発生しないように、このような大きなファイルの解析をどのようにチャンクすることができますか?
'XML辞書は' NSXMLParser'を使用します。彼らは何をしていますか? –
githubプロジェクトのメインページの説明を読んでください。 XMLディクショナリは、XMLドキュメント全体を表すオブジェクトの巨大なツリーを構築しています。 NSXMLParserがメモリの問題を引き起こしていることを超えていることは、余計なオーバーヘッドです。基本的に、XMLファイルの3つのコピーがメモリにあります。 1)ファイル全体の完全なNSData。 2)XML辞書によって構築された巨大な木。 3)解析されたXMLを処理した後の独自のデータモデル。 #1は、ファイル全体をメモリにロードするのではなく、XMLファイルへのストリームを開くことで回避できます。 NSXMLParserだけで#2を避けることができます。 – rmaddy
これを行うヘルパークラスはありますか?私はあなたが言及している方法で 'NSXMLParser'を使ってストリームを開くことに関するそこに少しの情報を見つけることです。 –