我正在构建一个从在线服务器解析 XML 的应用程序。我想在本地缓存 XML 文件 24 小时。如何更改以下代码以从资源目录中的文件中读取?
parser = [[NSXMLParser alloc] initWithContentsOfURL: [NSURL URLWithString:url]];
最佳答案
您可以获取 xml 文件的路径,如下所示:
NSString* path = [[NSBundle mainBundle] pathForResource:@"yourxml" ofType:@"xml"];
然后获取一个 NSData 实例,如下所示:
NSData *xmlData = [[NSMutableData alloc] initWithContentsOfFile:path];
最后调用
NSXMLParser
的 initWithData
方法。
但是您无法修改应用程序包的内容。 bundle 中的文件(您请求的资源目录)无法修改。
有不同的方法可以做到这一点:
- 从网络获取文件并将其保存在属性列表文件中
- 使用
NSFileManager
类保存和读取 xml 文件
NSFileManager
的示例:
NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString* documentsDirectoryPath = [paths objectAtIndex:0];
NSString* filePath = [documentsDirectoryPath stringByAppendingPathComponent:@"yourxml.xml"];
该代码片段获取文档目录中包含的 xml 文件路径。这意味着那里已经有一个文件了。欲了解更多信息,请参阅NSFileManager class和how-to-save-your-app-data-with-nscoding-and-nsfilemanager
希望有帮助。
关于objective-c - 从应用程序包中解析 XML,而不是 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9351999/