如何在Objective-c中将文件从URL保存到本地

如何在Objective-c中将文件从URL保存到本地,objective-c,Objective C,根据a,XmlAppDelegate.m文件中的代码(如下所示)将直接从给定的URL解析XML文件 我想问,有没有办法先将XML文件保存到本地内存,然后相应地处理解析工作 谢谢 NSURL *url = [[NSURL alloc] initWithString:@"http://www.edumobile.org/blog/uploads/XML-parsing-data/Data.xml"]; NSXMLParser *xmlParser = [[NSXMLParser alloc] ini

根据a,XmlAppDelegate.m文件中的代码(如下所示)将直接从给定的URL解析XML文件

我想问,有没有办法先将XML文件保存到本地内存,然后相应地处理解析工作

谢谢

NSURL *url = [[NSURL alloc] initWithString:@"http://www.edumobile.org/blog/uploads/XML-parsing-data/Data.xml"];
NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:url];

您始终可以将其加载到字符串中:

[NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
最好通过并测试
NSError
对象,您可能希望将其写入文件(
writeToFile:atomicaly:encoding:error:

您可以使用
initWithData:
NSData
将字符串传递到
NSXMLParser

[string dataUsingEncoding:NSUTF8StringEncoding];

在使用数据初始化XML解析器之前,只需将字节作为原始字节抓取并保存到磁盘:

NSData *contents = [NSData dataWithContentsOfURL:url];
BOOL success = [contents writeToFile:path atomically:YES];

NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithData:contents];

在Cocoa中,滥用字符串作为原始字节的容器通常是个坏主意。改为使用
NSData
。XML是一个字符串,如果OP希望以任何方式处理它,他将希望它采用该格式。唯一的问题是,对于XML,哪种编码是正确的。当从服务器获取数据并将该数据保存到文件时,数据可能包含字符串这一事实并不重要。此外,编码可能是预先知道的。这就是为什么NSXMLParser接受
NSData
对象,而不是字符串。它也更有效:NSString必须解析内容以检查编码错误。NSData不关心其内容。