iphone: получать XML с UIWebView? - PullRequest
       21

iphone: получать XML с UIWebView?

0 голосов
/ 21 октября 2010

У меня есть следующий URL http://gdata.youtube.com/feeds/api/standardfeeds/recently_featured?&start-index=1&max-results=15&v=2

Я пытаюсь загрузить его в UIWebView, а затем использовать javascript, чтобы получить его содержимое, и проанализировать его с помощью NSXMLParser.

Мой код выглядит так:

-(void)startDownloading{
    NSString *urlStr = [NSString stringWithFormat:@"http://gdata.youtube.com/feeds/api/standardfeeds/recently_featured?&start-index=%d&max-results=%d&v=2", range.location, range.length];
 NSLog(urlStr);
 NSURL *url = [NSURL URLWithString:urlStr];

 NSURLRequest *request = [NSURLRequest requestWithURL:url];
     [browser loadRequest:request];

    }

    - (void)webViewDidFinishLoad:(UIWebView *)webView{

     NSString *theStr = [webView stringByEvaluatingJavaScriptFromString:@"document.body.firstChild.innerHTML"];
     NSLog(theStr);
     NSData *receivedData = [theStr dataUsingEncoding:NSUTF8StringEncoding];

    }

проблема в том, что полученные данные не могут быть проанализированы с помощью NSXMLParser. Текст выглядит так: <? xml version = '1.0' encoding = 'UTF-8'?> tag: youtube.com, 2008: standardfeed: us: недавно_featured ...

в то время как если бы я использовал только обычный подход для получения данных (без браузера), я бы получил:

<?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:app='http://www.w3.org/2007/app' xmlns:media='http://search.yahoo.com/mrss/' xmlns:openSearch='http://a9.com/-/spec/opensearch/1.1/' xmlns:gd='http://schemas.google.com/g/2005' xmlns:yt='http://gdata.youtube.com/schemas/2007' gd:etag='W/&quot;DUADR347eCp7ImA9Wx5UFkg.&quot;'><id>tag:youtube.com,

Почему меняются символы? И как я могу предотвратить это

Кстати, для тех, кто интересуется, почему я вообще пытаюсь это сделать - я думаю, что этот метод позволяет быстрее получать данные.

1 Ответ

0 голосов
/ 21 октября 2010

Данные экранируются, вам нужно удалить их. Взгляните на:

- (NSString *)stringByReplacingPercentEscapesUsingEncoding:(NSStringEncoding)encoding

«Кстати, тем, кто интересуется, почему я вообще пытаюсь это сделать, - я думаю, что этот метод позволяет быстрее получать данные».

Не оптимизируйте преждевременно.

...