NSXMLParser не может анализировать специальные символы (акценты)
Я использую NSXMLParser для анализа xml из URL (мой код почти такой же, какВот)
Некоторые элементы содержат специальные символы, такие как & quot; & # xE1; & quot; что приводит к тому, что слово lik & # xE1; ndre разделяется на два (& # xE1; и ndre).
Вот мой 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>
Я уверен, что это так, потому что кодировка не установлена (я думаю, что это должно быть NSUTF8StringEncoding), но я не уверен, где и как его применять.
[ОБНОВИТЬ] Остальная часть моего кода ...
<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>
[ОБНОВЛЕНИЕ 2] Образец 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>