Как заставить initWithContentsOfURL ждать xml-страницы, которая генерируется динамически? - PullRequest
2 голосов
/ 23 апреля 2011

Я пытаюсь отправить запрос как часть URL-адреса для получения файла XML, а затем пытаюсь проанализировать файл XML с помощью NSXMLParser и initWithContentsOfURL. Однако анализатор не может проанализировать файл. Я тестировал парсер с тем же файлом, но на этот раз файл был сохранен на сервере (он не генерировался), и он работал просто отлично, поэтому я знаю, что это не проблема с парсером.

Я пришел к выводу, что он не анализирует его, потому что мне нужно загрузить файл, прежде чем я попытаюсь его проанализировать, или дать initWithContentsOfURL время для загрузки содержимого. Поэтому я попытался поместить это содержимое в NSString и NSData и использовать функцию сна, а также блок, но это тоже не сработало.

Как лучше всего решить эту проблему?

Вот часть кода:

NSString *surl = [NSString stringWithFormat:@"http://lxsrv7.oru.edu/~maria_hernandez/query.xml"];
url = [NSURL URLWithString:surl];
NSString *curl = [[NSString alloc] initWithContentsOfURL:url];

NSLog(@"URL: %@", surl);
NSLog(@"URL Content: %@", curl);

SXMLParser *xmlParser = [[NSXMLParser alloc] initWithData:receivedData];

//Other stuff we have tried:
NSURLRequest *theRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:surl] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
NSURLResponse =  nil;
NSError = nil;
receivedData = [NSURLConnection sendSynchronousRequest: theRequest returningResponse: &theResponse error: &error];

Дайте мне знать, если у вас есть дополнительные вопросы или вы хотите увидеть больше кода. Спасибо!

1 Ответ

0 голосов
/ 23 апреля 2011

вы пытались установить делегат для NSXMLParse, который реализует NSXMLParserDelegate, который имеет события для анализа документа

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSXMLParser_Class/Reference/Reference.html

...