2011-10-04 65 views
1

我想從服務器複製xml文件以將它保存到本地,因爲如果我將一次又一次地向服務器發送請求,則需要時間,所以我想在應用程序啓動時將xml複製到本地資源,然後解析當地的xml,將XML文件從服務器複製到iphone?

我該怎麼辦?

+0

你是爲WebKit還是Cocoa應用編碼? – Alex

+0

Cocoa app @Alex –

+0

爲什麼你需要複製XML文件?它暗示它或者不會改變(所以你只是將它捆綁在應用程序中),或者它不會像你輪詢服務器那樣頻繁改變(所以輪詢更少)。 – Alex

回答

1

首先你需要下載的文件:

NSURL *url = [NSURL URLWithString:FILEURL]; 
    NSURLRequest *request = [NSURLRequest requestWithURL:url]; 
    [NSURLConnection connectionWithRequest:request delegate:self]; 

然後添加在.h文件:

NSMutableData *receivedData; 

,並在M檔:

-(void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 
    { 
     if (receivedData) 
     { 
      [receivedData appendData:data]; 
     } 
     else 
     { 
      receivedData = [[NSMutableData alloc] initWithData:data]; 
     } 
    } 

    -(void) connectionDidFinishLoading:(NSURLConnection *)connection 
    { 
     //saving your data in the local 

     NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
     NSString *fullName = [NSString stringWithFormat:@"xmlfile.xml"]; 

     NSString *fullFilePath = [NSString stringWithFormat:@"%@/%@",docDir,fullName]; 
     [receivedData writeToFile:fullFilePath atomically:YES]; 

    } 

編輯: 從本地獲取文件 -

NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
     NSString *fullName = [NSString stringWithFormat:@"xmlfile.xml"]; 

     NSString *fullFilePath = [NSString stringWithFormat:@"%@/%@",docDir,fullName]; 
NSData *myData = [NSData dataWithContentsOfFile:filePath]; 

現在你可以在解析NSData的時候,網站上有很多例子。

+0

和如何解析文件,只是文件名傳遞給的NSXMLParser? –

+0

檢查編輯帖子 – MTA

+0

THnx,當你從網絡和本地進行解析時速度有差異嗎? –

相關問題