2010-06-28 4 views
1

J'ai le flux RSS suivant que j'essaie d'analyser à l'aide de touchXML pour une application iphone.Analyser `<media: content>` Balises de flux RSS à l'aide de touchXML

<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&amp;expires=1277743230&amp;streamID=2678810&amp;signature=beZ2o45XNredayqbtIzzL7khsnt1EEjwByf0yMgSEv8&amp;size=20985109&amp;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> 

Le problème que je vais avoir est que je ne peux pas accéder aux balises <media:...> surtout l'URL à <media:content>. Le code J'utilise la méthode suivante pour analyser le flux rss.

-(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; 
} 

Que puis-je faire pour obtenir l'URL stocké à la <media:content>?

Merci

+0

Hi;) C'est une donnée d'espace de noms. Je ne suis pas sûr mais sur la page de code google de TouchXML la feuille de route ils mentionnent le support d'espace de noms: http://code.google.com/p/touchcode/wiki/TouchXML – rogeriopvl

+0

Pourquoi n'utilisez-vous pas NSXMLParser? – Warrior

+0

Ok, je vais le faire. – ametade

Répondre

3

En utilisant touchXML vous pouvez analyser les balises comme <media:content>, <media:group>, etc ... en utilisant la partie de l'étiquette qui vient après le :

media:title -> title 

media:keywords -> keywords 
4

changement

resultNodes = [Erreur rssParser nodesForXPath: @ "// item": nil];

à

resultNodes = [RSSParser nodesForXPath: @ "// * [local-name() 'item' =]" erreur: nil];

+0

Comment analyser le code XML SOAP du schéma XSD à partir de cet analyseur car il me renvoie null – user366584