J'analyse un flux RSS avec NSXMLParser et il fonctionne très bien pour le titre et d'autres chaînes, mais l'un des éléments est une image des thats commeEn utilisant NSXMLParser avec CDATA
<!CDATA <a href="http:image..etc>
Comment puis-je ajouter que mon image de la cellule dans ma vue de la table? Est-ce que je définirais cela comme un type d'image?
C'est ce que j'utilise pour faire mon analyse:
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
//NSLog(@"found this element: %@", elementName);
currentElement = [elementName copy];
if ([elementName isEqualToString:@"item"]) {
// clear out our story item caches...
item = [[NSMutableDictionary alloc] init];
currentTitle = [[NSMutableString alloc] init];
currentDate = [ [NSMutableString alloc] init];
currentSummary = [[NSMutableString alloc] init];
currentLink = [[NSMutableString alloc] init];
}
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
//NSLog(@"ended element: %@", elementName);
if ([elementName isEqualToString:@"item"]) {
// save values to an item, then store that item into the array...
[item setObject:currentTitle forKey:@"title"];
[item setObject:currentLink forKey:@"link"];
[item setObject:currentSummary forKey:@"description"];
[item setObject:currentDate forKey:@"date"];
[stories addObject:[item copy]];
NSLog(@"adding story: %@", currentTitle);
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
//NSLog(@"found characters: %@", string);
// save the characters for the current item...
if ([currentElement isEqualToString:@"title"]) {
[currentTitle appendString:string];
} else if ([currentElement isEqualToString:@"link"]) {
[currentLink appendString:string];
} else if ([currentElement isEqualToString:@"description"]) {
[currentSummary appendString:string];
} else if ([currentElement isEqualToString:@"pubDate"]) {
[currentDate appendString:string];
}
}
Oui, il y a une URL d'image là-dedans. Comment puis-je extraire une URL d'image à l'aide de NSXMLParser? – Xcoder
Jetez un oeil à la chaîne dans la section CDATA. Si c'est toujours un xml valide, lancez une autre instance de NSXMLParser sur * cette * chaîne. Si ce n'est pas du XML valide, vous devrez faire quelque chose d'autre, par exemple, trouver le tag manuellement. – Justicle
Les CMS tels que Wordpress ont la description dans les balises CDATA. Un codeur Iphone sera probablement invité à afficher le texte de description dans la partie lecteur RSS de son application, comme tous les lecteurs RSS. La réponse de GabrielN est la solution. –