objective-c - 从应用程序包中解析 XML,而不是 URL

标签 objective-c xcode nsxmlparser

我正在构建一个从在线服务器解析 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];

最后调用

NSXMLParserinitWithData 方法。

但是您无法修改应用程序包的内容。 bundle 中的文件(您请求的资源目录)无法修改。

有不同的方法可以做到这一点:

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

NSFileManager 的示例:

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

该代码片段获取文档目录中包含的 xml 文件路径。这意味着那里已经有一个文件了。欲了解更多信息,请参阅NSFileManager classhow-to-save-your-app-data-with-nscoding-and-nsfilemanager

希望有帮助。

关于objective-c - 从应用程序包中解析 XML,而不是 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9351999/

相关文章:

ios - 以编程方式快速更改 UIButton 的文本

iphone - IOS 4.3 如何正确解析来自 Web 服务的 Json 响应并将其绑定(bind)到 UITABLEVIEW

ios - 选择一个 TableViewCell 为 indexPathForSelectedRow()?.row 在 Swift 中提供 nil

objective-c - 菜单栏应用程序与窗口应用程序?

ios - 您是否在同一个 prepareForSegue 方法中为一个 View Controller 的所有 segues 实现了行为?

ios - 选择器 'datePicker' 没有已知的类方法

ios - 从 NSMutable Dictionary 获取一个对象并将其设置为新键。

ios - 如何使用将发布到 URL 的特殊字符对字符串进行编码? objective-C

iphone - UITableView 加载数据和显示 HUD 的问题

ios - cocos2d v3 覆盖清理