我需要解析一个庞大的xml文件。它的大小将略高于400-500 MB。我的申请完全基于这些数据。但解析需要很长时间。在iPhone上,每次请求都需要10分钟以上。我正在使用内置的iphone sdk NSXMLParsers来解析数据。我现在该怎么办?
由于 的Pankaj
答案 0 :(得分:5)
400-500 MB的XML在iPhone上疯狂。寻找替代方案。
例如,如果要在应用程序中包含此文件,请考虑将其转换为sqlite或Core Data数据库,并将该数据库包含在应用程序中。
如果要从网络下载此数据,请考虑在应用内进行相同的翻译,然后丢弃下载的XML文件。
答案 1 :(得分:1)
如前所述,XML很可能不是该数据量的正确格式。如果您的XML具有嵌入的图像数据或类似的东西,您可以将其放入应用程序的资源分支中,并将XML引用文件放在适当的路径上。
但是,如果您在此问题上没有任何选择并且必须使用XML,则可以考虑使用libxml库而不是NSXMLParser。 libxml解析器是用C语言编写的,因此使用它比NSXMLParser要多一些,但它可以在设备上使用,并且根据XML的结构,它可以提供比Objective-C对应物明显更好的性能。当然,你必须在任何一种情况下使用SAX解析。
无论你如何解析XML,我都会回应你没有以这种格式保存数据的建议。一旦您提取信息,尝试将其转换为更容易使用的信息。这样,您至少可以限制应用程序初次使用的高性能成本。