À l'aide de NSXMLParser avec CDATA
Je suis à l'analyse d'un flux RSS avec NSXMLParser, et il fonctionne très bien pour le titre et d'autres chaînes de caractères, mais un des éléments est une image c'est comme
<!CDATA <a href="http:image..etc>
Comment puis-je ajouter que, comme ma cellule image dans ma table? Je définirais 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];
}
}
OriginalL'auteur Xcoder | 2009-07-08
Vous devez vous connecter pour publier un commentaire.
Le point de CDATA est que tout ce qui en elle n'est pas considérée comme faisant partie du document XML.
Donc si vous avez des balises dans CDATA l'analyseur de les ignorer.
Je devine que ce CDATA est dans la description de l'élément. De sorte que vous aurez besoin pour extraire les balises de la "description" de l'élément, soit manuellement, soit via un autre exemple d'un analyseur.
Jetez un oeil à la chaîne à l'intérieur de la section CDATA. Si elle est toujours valide xml, le feu jusqu'à une autre instance de NSXMLParser sur que chaîne de caractères. Si elle n'est pas valide XML, vous aurez à faire Autre Chose™, par exemple, trouver la balise manuellement.
Sgc comme WordPress ont la description dans CDATA balises. Un Iphone programmeur va probablement être demandé de présenter le texte de description dans le lecteur de flux RSS le cadre de son application, tout comme tous les lecteurs de flux RSS en faire. GabrielN la réponse est la solution.
OriginalL'auteur Justicle
Vous pouvez utiliser
Ce sera la réponse pour la plupart de la recherche pour ce faire un travail. Ce n'est pas du tout évident que initWithData donnera une chaîne valide à partir de la trouvé NSData, mais bien sûr, quand vous le voyez vous aller " doh!'. 🙂 A fonctionné pour moi, +1.
Veuillez voir ma question stackoverflow.com/questions/43539307/.... Comment puis-je utiliser votre code entendre
OriginalL'auteur Gabriel