estoy usando NSXMLParser para analizar un xml de una url (mi código es casi exactamente el mismo que here)NSXMLParser no puede analizar los caracteres especiales (acentos)
Algunos de los elementos contienen caracteres especiales como "A "que hace que una palabra lik ándre se divida en dos (á y ndre).
Aquí es mi 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;}
Estoy bastante seguro de que es debido a que la codificación no se establece (creo que tiene que ser NSUTF8StringEncoding), pero no estoy seguro de dónde/cómo aplicarlo.
[ACTUALIZACIÓN] resto de mi código ...
- (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]];
}
[ACTUALIZACIÓN 2] XML de ejemplo ...
<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>
Soy nuevo en Obj-C, pero me parece que podría convertir datos en un NSString, codificar eso como UTF8 [como se muestra aquí] (http://stackoverflow.com/questions/2467844/ convert-utf-8-encoded-nsdata-to-nsstring) y pasarlo a NSXMLParser? – inkedmn
Uso NSXMLParser mucho y no he tenido ese problema. ¿Puedes publicar la porción del código que procesa el texto XML? –
Publiqué el resto de mi código. Me pregunto si el problema ahora radica en foundCharacters? –