#iphone #ios4 #nsurlconnection #nsxml
#iPhone #ios4 #nsurlconnection #nsxml
Вопрос:
В настоящее время я использую NSURLConnection для загрузки некоторой даты из базы данных с помощью php-скрипта на сервере.
Соединение работает нормально, и данные получены правильно. Однако у меня возникает проблема, когда я приступаю к анализу данных.
В настоящее время я пытаюсь использовать NSXMLParser для анализа данных, однако это не удается с кодом ошибки 4, я думаю, это потому, что то, что я извлекаю, не является полностью XML. Если это полностью XML, это работает.
Вот пример извлеченных данных :
43534545-45345345-34534554|iPhone emulator|<provdoc>
<characteristic type="P1">
...
</characteristic>
</provdoc>
И что я хотел бы сделать, это разделить данные на:
43534545-45345345-34534554
и:
iPhone emulator
и
<provdoc>
<characteristic type="Profile1">
...
</characteristic>
</provdoc>
Итак, я предполагаю, что я должен сделать это в следующей функции, где я беру данные, мне нужно знать, как я разделяю данные на вышеупомянутые три раздела?
Итак, в итоге я получаю две строки, первую с числами, а вторую с битом эмулятора iPhone, а затем данные, которые можно отправить через NSXMLParser.
Может ли кто-нибудь указать мне правильное направление, как и что мне нужно для этого?
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
[self.responseData appendData:data];
}
Ответ №1:
Преобразуйте окончательные NSData в NSString:
NSString *someString = [[NSString alloc] initWithData:hashedData encoding:NSUTF8Encoding];
Затем вам нужно будет начать разделять эту строку. Вот пример получения первой части:
NSRange end = [someString rangeOfString:@"<"];
NSString *str = [someString substringWithRange:NSMakeRange(0, end.location)];
Затем разделите первый:
NSArray *initialItems = [str componentsSeparatedByString:@"|"];
Вы должны быть в состоянии разобраться с остальным с помощью вышеуказанных методов.
Комментарии:
1. Отлично, преобразование из данных в строку, разделение строки и последующее преобразование обратно в данные для синтаксического анализа было частью, которую я не понял, большое спасибо, теперь она работает