Note that there are some explanatory texts on larger screens.

plurals
  1. POAccessing specific child elements when parsing RSS with NSXMLParser
    text
    copied!<p>Dear Scholars I am trying to parse a RSS feed with the following item element structure</p> <pre><code>&lt;item&gt; &lt;title&gt;Title&lt;/title&gt; &lt;link&gt;http://somelink.com&lt;/link&gt; &lt;description&gt;The description&lt;/description&gt; &lt;author&gt;rss@youtube.com&lt;/author&gt; &lt;guid isPermaLink="false"&gt;http://youtube.com/?v=XBE4AX0Iuvw&lt;/guid&gt; &lt;pubDate&gt;Thu, 11 Nov 2010 10:56:44 +0000&lt;/pubDate&gt; &lt;media:title&gt;Media Title&lt;/media:title&gt; &lt;media:thumbnail width="120" url="http://i1.ytimg.com/vi/XBE4AX0Iuvw/default.jpg" height="90"/&gt; &lt;media:category label="Tags"/&gt; &lt;media:player url="http://youtube.com/?v=XBE4AX0Iuvw"/&gt; &lt;media:credit&gt;Credit name&lt;/media:credit&gt; &lt;enclosure url="http://youtube.com/v/XBE4AX0Iuvw.swf" duration="104" type="application/x-shockwave-flash"/&gt; &lt;/item&gt; </code></pre> <p>Please note the tag <strong>media:thumbnail.url</strong> of which my question is related to.</p> <p>Parser code:</p> <pre><code>// string contants found in the RSS feed static NSString *kIDStr = @"link"; static NSString *kNameStr = @"thumbnail"; static NSString *kImageStr = @"media:thumbnail"; static NSString *kArtistStr = @"description"; static NSString *kEntryStr = @"item"; - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict { // entry: { id (link), im:name (app name), im:image (variable height) } // NSLog(@"%@",elementName); // I can see all top level elements,even media:thumbnail if ([elementName isEqualToString:kEntryStr]) { self.workingEntry = [[[AppRecord alloc] init] autorelease]; } storingCharacterData = [elementsToParse containsObject:elementName]; } - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName { if (self.workingEntry) { if (storingCharacterData) { NSString *trimmedString = [workingPropertyString stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]]; [workingPropertyString setString:@""]; // clear the string for next time if ([elementName isEqualToString:kIDStr]) { self.workingEntry.appURLString = trimmedString; } else if ([elementName isEqualToString:kNameStr]) { self.workingEntry.appName = trimmedString; } else if ([elementName isEqualToString:kImageStr]) { NSLog(@"The Content: %@",workingPropertyString); // Comes back empty, I guess due to the fact it has children inside. // QUESTION: How do I get the value stored in media:thumbnail .url //NSLog(@"&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; %@ / %@",[elementsToParse objectAtIndex:2],workingPropertyString); self.workingEntry.imageURLString = trimmedString; } else if ([elementName isEqualToString:kArtistStr]) { self.workingEntry.artist = trimmedString; } } else if ([elementName isEqualToString:kEntryStr]) { [self.workingArray addObject:self.workingEntry]; self.workingEntry = nil; } } } </code></pre> <p>It seems to be a matter of syntax which I am not familiar with, which grabs the value stored in media:thumbnail.url. Can someone be as kind as to assist me in how do do so?</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload