sto usando NSXMLParser per analizzare un XML da un URL (il mio codice è quasi esattamente la stessa di here)NSXMLParser non può analizzare i caratteri speciali (accenti)
Alcuni degli elementi contengono caratteri speciali come "A "che causa una parola lik ándre a dividere in due (á e ndre).
Ecco il mio loadXMLByURL
-(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;}
Sono abbastanza sicuro che è perché la codifica non è impostata (penso che deve essere NSUTF8StringEncoding), ma non sono sicuro dove/come applicarla.
[UPDATE] Resto del mio codice ...
- (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]];
}
[UPDATE 2] XML di esempio ...
<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>
Sono nuovo di zecca per Obj-C, ma mi sembra che potresti convertire i dati in un NSString, codificarlo come UTF8 [come mostrato qui] (http://stackoverflow.com/questions/2467844/ convert-utf-8-encoded-nsdata-to-nsstring) e passarlo a NSXMLParser? – inkedmn
Uso molto NSXMLParser e non ho riscontrato questo problema. Puoi pubblicare la parte del codice che elabora il testo XML? –
Inserito il resto del mio codice. Mi chiedo se il problema si trova ora in foundCharacters? –