2011-10-06 29 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不關心它的內容。 –

相關問題