Http Получить plist в формате XML в массив или в файл, а затем в массив? - PullRequest
0 голосов
/ 27 мая 2011

Я заменяю простой initWithContentsOfURL: на динамический HttpGet, где я передаю два параметра, и эта веб-страница возвращает те же данные, что и XML, в текстовом формате.

Нужно действительно проанализировать данные, чтобы получить их вмассив словарей?Я надеялся на NSXMLParser initWithData: и затем какой-то автоматизированный способ инициализации NSArray со всеми узлами, структура следуя XML.(Это список в формате XML, поэтому структура и все ключевые имена уже в нем. Зачем мне писать полную копию всего этого в Objective-C?!)

Я быбудьте счастливы с httpgetting в текстовый файл и затем NSArray initWithContentsOfFile.

Редактировать: Это приводит к объекту NSData размером 26K, но сообщение об ошибке «Преобразование строки не удалось. Строка пуста».

//Initiate connection
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease]; [request setURL:url(aspurl)];
[request setHTTPMethod:@"GET"];
    //keep adding your headers this way
NSString *accept = [NSString stringWithFormat:@"application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,/*;q=0.5"];
[request addValue:accept forHTTPHeaderField: @"Accept"];
    //send request & get response
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

NSString *errString;
NSMutableArray *arr=[NSPropertyListSerialization propertyListFromData:returnData
                                         mutabilityOption:NSPropertyListMutableContainers
                                                   format: NULL 
                             errorDescription:&errString];

if (errString)
{
    NSLog(@"%@",errString);
    [errString release]; // exception to the rules
}

Это дает ошибку «Преобразование строки не удалось. Строка пуста».и arr 0x0.

Кто-нибудь может указать на мою ошибку?

1 Ответ

1 голос
/ 27 мая 2011

Во-первых, вы можете использовать класс, такой как XML-to-NSDictionary , чтобы выполнить синтаксический анализ, и это может быть очень просто, но, похоже, вам не нравится такой подход.

Поскольку вы имеете дело со списком, вы можете:

  1. используйте NSURLConnection для загрузки списка в NSData;
  2. используйте [NSPropertyListSerialization propertyListFromData:mutabilityOption:format:errorDescription:method], чтобы преобразовать это в NSDictionary/NSArray;

Посмотрите также Руководство по программированию списка свойств .

...