从应用程序包而不是URL解析XML

时间:2012-02-19 18:39:45

标签: objective-c xcode nsxmlparser

我正在构建一个从在线服务器解析XML的应用程序。我想在本地缓存XML文件24小时。如何更改以下代码以从资源目录中的文件中读取?

parser = [[NSXMLParser alloc] initWithContentsOfURL: [NSURL URLWithString:url]];

1 个答案:

答案 0 :(得分:4)

您可以获取xml文件的路径,如下所示:

NSString* path = [[NSBundle mainBundle] pathForResource:@"yourxml" ofType:@"xml"];

然后获取如下所示的NSData实例:

NSData *xmlData = [[NSMutableData alloc] initWithContentsOfFile:path];

最后致电

initWithData

NSXMLParser方法。

您无法修改应用包的内容。无法修改捆绑包中的文件(您要求的资源目录)。

有不同的方法:

  • 从网络抓取文件并将其保存在属性列表文件中
  • 使用NSFileManager类来保存和读取您的xml文件

NSFileManager的示例:

NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString* documentsDirectoryPath = [paths objectAtIndex:0];
NSString* filePath = [documentsDirectoryPath stringByAppendingPathComponent:@"yourxml.xml"];

该代码段获取Documents目录中包含的xml文件路径。这意味着那里已有一个文件。有关详细信息,请参阅NSFileManager classhow-to-save-your-app-data-with-nscoding-and-nsfilemanager

希望它有所帮助。