και αυτή ήταν η ερώτησή μου στο προηγούμενο ποστ, γιατί μπαίνει τόσες φορές στη foundCharacters ?
απο κει ξεκίνησε το πρόβλημα και άρχισα να ψάχνομαι για να καταλήξω εδώ.
Έτσι δουλεύει ο parser. Σου στέλνει αυτά που διαβάζει κομμάτι-κομμάτι. Είναι στην ευθύνη σου είτε να το κάνεις parse on the fly ή στη δική σου περίπτωση να συνθέσεις το συνολικό string.
Οπότε όρισε στην class
@property(nonatomic, retain) NSString *currentNodeContent;
@synthesize currentNodeContent στο implementation
και
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
self.currentNodeContent = [currentNodeContent stringByAppendingString:string];
}
- (void) parser:(NSXMLParser *)parser didEndElement:(NSString *)elementname namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
NSLog(@"Element Found : %@", elementname);
if ([elementname isEqualToString:@"title"])
{
currentFeed.rssTitle = [currentNodeContent stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
} else if ([elementname isEqualToString:@"description"]) {
currentFeed.rssDescription = [currentNodeContent stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
} else if ([elementname isEqualToString:@"pubDate"]) {
currentFeed.rsspubDate = currentNodeContent;
} else if ([elementname isEqualToString:@"item"]) {
[rssFeeds addObject:currentFeed];
currentFeed = nil;
}
}
- (void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementname namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
self.currentNodeContent = @"";
if ([elementname isEqualToString:@"item"])
{
currentFeed = [[rssReader alloc] init];
}
}
Τελευταία επεξεργασία από: nickbit, 21/01/2012 - 20:30