Я использую парсер NSXML для анализа в приложении для iPhone.Теперь все работает нормально, за исключением случаев, когда данные поступают на французском языке.
Например, данные с сервера поступают как Ch\u00e9rie FM
.
Теперь, используя аргумент string
метода foundCharacters
, я получаю только строку, так как остальные символы Ch не отображаются.Поэтому, наконец, моя строка усекается только до 'Ch' целого числа Cherie fm
Что можно сделать?
Код:
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName
attributes:(NSDictionary *)attributeDict
{
if (appDelegate.objPlayer.fromFlickrorRecommend == TRUE)
{
if([elementName isEqualToString:@"outline"] && [[attributeDict valueForKey:@"text"] isEqualToString:@"You may also like"])
{
flagCheck = 1;
}
else if ([elementName isEqualToString:@"outline"] && [[attributeDict valueForKey:@"text"] isEqualToString:@"Genres"])
{
flagCheck = 0;
}
if (flagCheck == 1 && [elementName isEqualToString:@"outline"])
{
if([[attributeDict valueForKey:@"type"] isEqualToString:@"audio"])
{
[appDelegate.objPlayer.recommendDataArray addObject:attributeDict];
}
}
}
else
{
if ([elementName isEqualToString:@"location"])
{
flagCheck = 2;
}
else if ([elementName isEqualToString:@"url"])
{
flagCheck = 3;
}
else if ([elementName isEqualToString:@"name"])
{
flagCheck = 4;
}
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
if (flagCheck == 2)
{
flagCheck = -1;
appDelegate.objPlayer.flickrCity = string;
}
else if(flagCheck == 3)
{
flagCheck = -1;
appDelegate.objPlayer.stationURL = string;
}
else if(flagCheck == 4)
{
flagCheck = -1;
appDelegate.playStationName = string;
}
//else if(flagCheck == 0) // change
// {
// appDelegate.playStationName = string;
// }
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
//if (flagCheck == 1 && [elementName isEqualToString:@"outline"])
// {
// [appDelegate.objPlayer.recommendDataArray addObject:dataDictionary];
// dataDictionary = nil;
// [dataDictionary release];
// }
}