【发布时间】:2011-10-28 05:50:57
【问题描述】:
我正在使用 NSXML Parser 在我的 iPhone 应用程序中进行解析。现在一切正常,除非数据是法语。
例如,来自服务器的数据为Ch\u00e9rie FM。
现在在foundCharacters 方法的string 参数下,我只得到字符串,因为'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];
// }
}
【问题讨论】:
-
-parser:foundCharacters:是否被多次调用? -
是的..但它没有引入字符串
Ch\u00e9rie FM.的其他字符 -
在foundCharacters方法下只显示
Ch,其他字符\u00e9rie fm不出现。虽然 foundCharacters 方法被多次调用。 -
第二次调用 foundCharacters 会得到什么?
-
您如何获得正在解析的 XML 字符串?您是否验证了源字符串已在内存中正确组装,并且没有编码问题导致数据损坏?
标签: iphone objective-c xml-parsing nsxmlparser nsxml