2011-10-06 60 views
1

根据tutorial,下面的XmlAppDelegate.m文件中的代码将直接从给定的URL解析XML文件。如何将URL中的文件保存为Objective-c中的本地文件

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

感谢

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

回答

1

只要抓住字节为原始字节,并与数据初始化XML解析器之前将它们保存到磁盘:

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

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

请解释投票。 –

-2

您可以随时将其加载到一个字符串:

[NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil]; 

这是最好的传球和测试NSError对象,你可能需要将其写入一个文件(writeToFile:atomically:encoding:error: )。

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

[string dataUsingEncoding:NSUTF8StringEncoding]; 
+0

在Cocoa中,滥用原始字节容器的字符串通常是一个糟糕的主意。改用'NSData'。 –

+0

XML是一个字符串,如果OP想要以任何方式处理它,他会以这种格式要求它。唯一的问题是哪种编码对于XML是正确的。 –

+0

从服务器获取数据并将该数据保存到文件时,数据可能包含字符串的事实并不重要。另外,编码可以预先知道。这就是为什么NSXMLParser需要一个'NSData'对象,而不是一个字符串。它也更高效:NSString必须解析内容以检查编码错误。 NSData不关心它的内容。 –

相关问题