NSXMLParser não pode analisar caracteres especiais (acentos)
Estou usando o NSXMLParser para analisar um xml de um URL (meu código é quase exatamente o mesmo queAqui)
Alguns dos elementos contêm caracteres especiais como "á", o que faz com que a palavra lik ándre se divida em dois (á e ndre).
Aqui está minha loadXMLByURL
<code>-(id) loadXMLByURL:(NSString *)urlString{ tickets = [[NSMutableArray alloc] init]; NSURL *url = [NSURL URLWithString:urlString]; NSData *data = [[NSData alloc] initWithContentsOfURL:url]; parser = [[NSXMLParser alloc] initWithData:data]; parser.delegate = self; [parser parse]; return self;} </code>
Tenho certeza que é porque a codificação não está definida (eu acho que precisa ser NSUTF8StringEncoding), mas não tenho certeza onde / como aplicá-lo.
[UPDATE] Resto do meu código ...
<code>- (void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementname namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict { if ([elementname isEqualToString:@"ticket"]) { currentTicket = [Ticket alloc]; } } - (void) parser:(NSXMLParser *)parser didEndElement:(NSString *)elementname namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName { if ([elementname isEqualToString:@"name"]) { currentTicket.name = currentNodeContent; } else if ([elementname isEqualToString:@"title"]) { currentTicket.title = currentNodeContent; } else if ([elementname isEqualToString:@"status"]) { currentTicket.status = currentNodeContent; } else if ([elementname isEqualToString:@"ticket"]) { [tickets addObject:currentTicket]; [currentTicket release]; currentTicket = nil; [currentNodeContent release]; currentNodeContent = nil; } } - (void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string { currentNodeContent = (NSMutableString *) [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; } </code>
[UPDATE 2] Sample xml ...
<code><RB> <list> <ticket> <name>Andrew Ford</name> <title>3rd release</title> <status>1</status> </ticket> <ticket> <name>David Jenkins</name> <title>3rd release</title> <status>0</status> </ticket> <ticket> <name>Luis gomez ándre</name> <title>3rd release</title> <status>1</status> </ticket> </list> </RB> </code>