NSXMLParser nie może analizować znaków specjalnych (akcentów)
Używam NSXMLParser do analizowania xml z adresu URL (mój kod jest prawie dokładnie taki sam jaktutaj)
Niektóre elementy zawierają znaki specjalne, takie jak „á”, co powoduje, że słowo lik ándre dzieli się na dwa (á i ndre).
Oto mój 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>
Jestem pewien, że to dlatego, że kodowanie nie jest ustawione (myślę, że musi to być NSUTF8StringEncoding), ale nie jestem pewien, gdzie / jak go zastosować.
[AKTUALIZACJA] Reszta mojego kodu ...
<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>
[AKTUALIZACJA 2] Przykładowy plik 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>