2010-11-25 62 views
1

我需要解析一個巨大的XML文件。它的大小將略高於400-500 MB。我的應用程序完全基於這些數據。但解析需要很長時間。 iPhone上的每個請求都需要10分鐘以上。我正在使用內置於iphone sdk的NSXMLParsers來解析數據。我現在應該怎麼做?如何解析一個巨大的XML文件

感謝 潘卡

回答

5

400-500 MB XML的是iPhone上的瘋狂。尋找替代品。

例如,如果您在應用程序中包含此文件,請考慮將其轉換爲sqlite或Core Data數據庫,並將該數據庫包含在您的應用程序中。

如果您從網絡上下載此數據,請考慮在應用程序中執行相同的翻譯,然後丟棄下載的XML文件。

1

如前所述,XML很可能不適用於該數據量的正確格式。如果您的XML具有嵌入式圖像數據或其他特性,則可以將其放入應用程序的資源分支中,並將XML參考文件放在適當的路徑中。

但是,如果您根本沒有任何選擇,並且必須使用XML,則可以考慮使用libxml庫而不是NSXMLParser。 libxml解析器是用C語言編寫的,因此使用它比NSXMLParser工作多一點,但它可以在設備上使用,根據XML的結構,它可以提供比Objective-C更好的性能。當然,在任何情況下都必須使用SAX解析。

無論您如何解析XML,我都會迴應您建議您不要以這種格式保存數據。一旦你提取信息一旦嘗試將其轉換成更容易處理的東西。這樣,您至少可以將高性能成本限制在應用程序的初始使用中。

+0

帶SAX方式的libxml是解析大文件的好方法。 – AechoLiu 2010-11-26 08:26:14