У меня есть следующий канал RSS, который я пытаюсь проанализировать с помощью touchXML для приложения iphone.
<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:ext="http://ooyala.com/syndication/ext/" xmlns:mediasl="http://www.slide.com/funspace/developer/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:boxee="http://boxee.tv/spec/rss/"> <channel> <title>Channel Title</title> <description>Channel Description</description> <link>link</link> <item> <title>title</title> <guid isPermaLink="false">k2dDRpMTpto4kdpU_NhGmNGKRK0Ny0PH</guid> <pubDate>Fri, 25 Jun 2010 06:53:48 +0000</pubDate> <media:title>title</media:title> <media:keywords>Others</media:keywords> <media:category scheme="http://www.ooyala.com">/JBay10</media:category> <media:category scheme="http://www.ooyala.com">/JBay10/Webisodes</media:category> <media:thumbnail url="http://ak.c.ooyala.com/k2dDRpMTpto4kdpU_NhGmNGKRK0Ny0PH/BqcWmm1bH0zjWgL35lMDoxOjBrO7OBB8" width="640" height="360"/> <dcterms:valid>start=2010-06-25T06:53+00:00;scheme=W3C-DTF</dcterms:valid> <media:group> <media:content url="http://api.ooyala.com/syndication/stream_redirect?pcode=N2d2U6Azh1SxAcZeoJia-srBQAtY&expires=1277743230&streamID=2678810&signature=beZ2o45XNredayqbtIzzL7khsnt1EEjwByf0yMgSEv8&size=20985109&length=163280" type="video/mp4" medium="video" expression="full" bitrate="900" framerate="25.0" samplingrate="32.0" duration="163" lang="en"/> </media:group> </item> ... </channel>
Проблема в том, что у меня нет доступа к тегам <media:...>, особенно к URL-адресу <media:content>. Код, который я использую для разбора RSS-канала следующим методом.
<media:...>
<media:content>
-(NSMutableArray *) grabXMLFeed:(NSString *)feedAddress{ NSURL *url = [NSURL URLWithString: feedAddress]; CXMLDocument *rssParser = [[[CXMLDocument alloc] initWithContentsOfURL:url options:0 error:nil] autorelease]; NSArray *resultNodes = NULL; resultNodes = [rssParser nodesForXPath:@"//item" error:nil]; NSMutableArray *videos = [[NSMutableArray alloc] init]; for (CXMLElement *resultElement in resultNodes) { int counter; NSMutableDictionary *video = [[NSMutableDictionary alloc] init]; for(counter = 0; counter < [resultElement childCount]; counter++) { NSString *val = [[resultElement childAtIndex:counter] stringValue]; if ([val length] != 0) { [video setObject:[[resultElement childAtIndex:counter] stringValue] forKey:[[resultElement childAtIndex:counter] name]]; } } [videos addObject:[video copy]]; [video release]; } return videos; }
Что я могу сделать, чтобы сохранить URL-адрес в <media:content>?
Спасибо
изменение
resultNodes = [rssParser nodeForForPP: @ "// item" error: nil];
до
resultNodes = [rssParser nodeForForXPath: @ "// * [local-name () = 'item']" error: nil];
Используя touchXML, вы можете анализировать теги, такие как <media:content>, <media:group> и т. Д., Используя часть тега, которая идет после :
<media:group>
:
media:title -> title media:keywords -> keywords