2011-08-18 5 views
9

Tôi lấy dữ liệu từ một tệp XML và lưu trữ nó trong đối tượng NSData. Tôi muốn chuyển đổi NSData đó thành một NSDictionary và lưu trữ dữ liệu đó trong một plist.Chuyển đổi NSData sang NSDictionary

Mã của tôi là như sau:

NSURL *url = [NSURL URLWithString:@"http://www.fubar.com/sample.xml"]; 
    NSData *data = [NSData dataWithContentsOfURL:url]; 
    NSLog(@"%@", data); 

Để chuyển đổi các dữ liệu, tôi đang sử dụng:

- (NSDictionary *)downloadPlist:(NSString *)url { 
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:10]; 
    NSURLResponse *resp = nil; 
    NSError *err = nil; 
    NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&resp error:&err]; 

    if (!err) { 
     NSString *errorDescription = nil; 
     NSPropertyListFormat format; 
     NSDictionary *samplePlist = [NSPropertyListSerialization propertyListFromData:responseData mutabilityOption:NSPropertyListImmutable format:&format errorDescription:&errorDescription]; 

     if (!errorDescription) 
      return samplePlist; 

     [errorDescription release];    
    } 

    return nil; 
} 

bất cứ ai có thể vui lòng cho tôi biết làm thế nào để làm điều đó?

+0

Vâng, bạn cần phải đọc các tập tin XML và trích xuất các phần tử XML thuộc trong từ điển của bạn. Cách bạn làm điều đó phụ thuộc vào cấu trúc của tệp XML. –

Trả lời

2

Hãy thử mã này:

NSString *newStr1 = [[NSString alloc] initWithData:theData1 encoding:NSUTF8StringEncoding]; 
NSString *newStr2 = [[NSString alloc] initWithData:theData2 encoding:NSUTF8StringEncoding]; 
NSString *newStr3 = [[NSString alloc] initWithData:theData3 encoding:NSUTF8StringEncoding]; 

NSArray *keys = [NSArray arrayWithObjects:@"key1", @"key2", @"key3", nil]; 
NSArray *objects = [NSArray arrayWithObjects:newStr1 , newStr2 , newStr3 , nil]; 
NSDictionary *dictionary = [NSDictionary dictionaryWithObjects:objects forKeys:keys]; 

for (id key in dictionary) { 
    NSLog(@"key: %@, value: %@", key, [dictionary objectForKey:key]); 
} 

NSString *path = [[NSBundle mainBundle] pathForResource:@"Login" ofType:@"plist"]; 
[dictionary writeToFile:path atomically:YES]; 
//here Login is the plist name. 

Chúc mừng mã hóa

5

hay này:

NSString* dataStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 
SBJSON *jsonParser = [SBJSON new]; 
NSDictionary* result = (NSDictionary*)[jsonParser objectWithString:dataStr error:nil]; 
[jsonParser release]; 
[dataStr release]; 
+0

Cảm ơn vì điều này :) – Muzammil

+0

Điều này chỉ hoạt động đối với dữ liệu JSON và câu hỏi là về dữ liệu XML. – Brian

+0

SBJSON là gì? –