ich NSXMLParser bin mit einem xml von einer URL zu analysieren (mein Code ist fast genau die gleiche wie here)NSXMLParser keine Sonderzeichen analysieren kann (Akzent)
Einige der Elemente enthalten Sonderzeichen wie „á "was bewirkt, dass sich ein Wort wie zwei teilt (á und ndre).
Hier ist meine 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;}
Ich bin ziemlich sicher, es ist, weil die Codierung nicht gesetzt ist (ich glaube, es NSUTF8StringEncoding sein muss), aber ich bin nicht sicher, wo/wie sie anzuwenden.
[UPDATE] Rest meines 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]];
}
[UPDATE 2] Probe xml ...
<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>
Ich bin neu zu Obj-C, aber es würde mir scheinen, dass Sie Daten in einen NSString konvertieren könnten, kodieren Sie das als UTF8 [wie hier] (http://stackoverflow.com/questions/2467844/ convert-utf-8-encoded-nsdata-to-nsstring) und diese an NSXMLParser übergeben? – inkedmn
Ich benutze NSXMLParser viel und habe dieses Problem nicht gehabt. Können Sie den Teil des Codes posten, der den XML-Text verarbeitet? –
Den Rest meines Codes veröffentlicht. Ich frage mich, ob das Problem jetzt in foundCharacters liegt? –