サイズが巨大なxmlファイルを解析する必要があります。そのサイズは400-500 MBを少し上回っています。私のアプリケーションは完全にこのデータに基づいています。しかし、解析には膨大な時間がかかります。 iPhone上では、私が行うすべての要求に対して10分以上かかる。私は、データを解析するためにiphone sdkのNSXMLParserを使っています。私は今どうすればいい? XMLの巨大なXMLファイルを解析する方法
おかげ パンカジ
サイズが巨大なxmlファイルを解析する必要があります。そのサイズは400-500 MBを少し上回っています。私のアプリケーションは完全にこのデータに基づいています。しかし、解析には膨大な時間がかかります。 iPhone上では、私が行うすべての要求に対して10分以上かかる。私は、データを解析するためにiphone sdkのNSXMLParserを使っています。私は今どうすればいい? XMLの巨大なXMLファイルを解析する方法
おかげ パンカジ
400〜500メガバイトは、iPhoneに夢中です。代替案を探してください。
たとえば、このファイルをアプリケーションに含める場合は、そのファイルをsqliteまたはCore Dataデータベースに変換し、代わりにそのデータベースをアプリケーションに組み込むことを検討してください。
このデータをネットワークからダウンロードする場合は、同じ翻訳をアプリ内で実行してから、ダウンロードしたXMLファイルを破棄することを検討してください。
前述したように、XMLはそのデータ量の正しい形式ではない可能性があります。 XMLに画像データなどが埋め込まれている場合は、その情報をアプリケーションのリソースフォークに入れ、適切なパスにXML参照ファイルを置くだけです。
しかし、問題を選択せずにXMLを使用する必要がある場合は、NSXMLParserではなくlibxmlライブラリを使用することを検討してください。 libxmlパーサーはC言語で書かれているので、NSXMLParserよりも少し使いこなしていますが、これはデバイス上で利用でき、XMLの構造によってはObjective-Cと比べてパフォーマンスが大幅に向上する可能性があります。いずれにしても、SAX解析を使用する必要があります。
XMLをどのように解析するかに関わらず、データをその形式で保持しないように提案します。一度情報を抽出したら、一度それを何かに変換してみてください。そうすれば、アプリの最初の使用に向けて、パフォーマンス上のコストを最低限に抑えることができます。
巨大なファイルを解析するには、SAX方式のlibxmlが適しています。 – AechoLiu