objective-c - NSXMLParser 无法解析特殊字符(德语和法语)

标签 objective-c xml parsing special-characters nsxmlparser

我正在开发一个应用程序,它在私有(private)服务器上进行搜索并将结果显示给用户。问题是 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;
    }
}

任何帮助将不胜感激...... 提前致谢

最佳答案

您的 foundCharacters 方法应该将字符串附加到 NSMutableString 对象,因为它可以为单个值调用多次。在 didStartElement 中,初始化一个 NSMutableString 对象(我们称它为 elementContentString),然后执行此操作:

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)chars
{
    [self.elementContentString appendString:chars];
}

在您的 didEndElement 中,您可以获得字符串形式的内容。请注意,您应该使用 [NSString stringWithString:self.elementContentString] 制作它的一个不可变副本(这样您就不会用下一个元素覆盖它)。

关于objective-c - NSXMLParser 无法解析特殊字符(德语和法语),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12598662/

相关文章:

objective-c - 如何获取当前Mac型号图像

ios - 范围 slider 事件值更改

php - 用html阵营解析mysql到xml

java - 我的方法一直说我需要返回一个字符串,但我的方法有一个返回字符串的返回语句

mongodb - 使用 MongoDB 索引 Markdown 文件

android - 如何使用 Jsoup 解析 <div class ="name"> 中的文本?

ios - UITextField 上的 UITapGestureRecognizer 在 IOS 7.1 中不再有效

ios - 使用 Storyboard 中的属性字符串本地化 UILabel

c# - 需要命名空间管理器或 XsltContext。此查询具有前缀、变量或用户定义的函数

.net - 序列化为 XML 片段 - 而不是 XML 文档