我正在开发一个应用程序,它在私人服务器上进行搜索并向用户显示结果。问题是NSXLParser无法解析特殊的德语和法语字符。例如:它应该是:(Geschäftsführer) - >我得到的是:(äftsführer)
我该如何解决这个问题?
这是我的代码:
- (void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
currentNodeContent = (NSMutableString *) [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
}
- (void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementname namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
if ([elementname isEqualToString:@"results"])
{
currentJob = [SearchResult alloc];
}
}
- (void) parser:(NSXMLParser *)parser didEndElement:(NSString *)elementname namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
if ([elementname isEqualToString:@"jobTitle"])
{
currentJob.jobTitle = currentNodeContent;
}
if ([elementname isEqualToString:@"location"])
{
currentJob.shortAddress = currentNodeContent;
}
if ([elementname isEqualToString:@"companyName"])
{
currentJob.employer = currentNodeContent;
}
if ([elementname isEqualToString:@"results"])
{
[self.jobs addObject:currentJob];
currentJob = nil;
currentNodeContent = nil;
}
}
任何帮助将不胜感激...... 提前致谢
答案 0 :(得分:3)
您的foundCharacters
方法应该将字符串附加到NSMutableString对象,因为可以为单个值多次调用它。在didStartElement
中,初始化一个NSMutableString对象(让我们称之为elementContentString
),然后执行以下操作:
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)chars
{
[self.elementContentString appendString:chars];
}
在didEndElement
中,您可以将内容作为字符串获取。请注意,您应该使用[NSString stringWithString:self.elementContentString]
制作一个不可变的副本(因此不要使用下一个元素覆盖它)。