problema di risposta XML
Domanda
Ho provato a leggere i dati di risposta da Google Weather API, ma dieresi tedesche non vengono visualizzati correttamente. Invece di "ö" ottengo "^".
Credo che il problema sono quei due righe di codice:
CXMLElement *resultElement = [nodes objectAtIndex:0];
description = [[[[resultElement attributeForName:@"data"] stringValue] copy] autorelease];
Come posso ottenere dati da resultElement senza stringValue?
PS: io uso TouchXML per analizzare XML
Soluzione
È necessario utilizzare un NSURLConnection per ottenere i dati suppongo. Quando si ricevono i dati è possibile convertirlo in un NSString utilizzando la codifica appropriata. Per esempio.
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
if(xmlResponse == nil){
xmlResponse = [[NSMutableString alloc] initWithData:data encoding:NSISOLatin1StringEncoding];
}
else{
NSMutableString *temp = [[NSMutableString alloc] initWithData:data encoding:NSISOLatin1StringEncoding];
[xmlResponse appendString:temp];
[temp release];
}
}
Ecco xmlResponse è la NSMutableString che è possibile passare al parser. Ho usato codifica NSISOLatin1. È possibile controllare altri tipi di codifica e vedere quello che ti dà correttamente i caratteri (NSUTF8StringEncoding dovrebbe farlo suppongo) .È possibile controllare la documentazione delle API per un elenco delle codifiche supportate.