5

私は、プライベートサーバーで検索を行い、結果をユーザーに表示するアプリに取り組んでいます。問題は、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;
    }
}

どんな助けでも大歓迎です...事前に感謝します

4

1 に答える 1

3

foundCharacters1つの値に対して複数回呼び出すことができるため、メソッドは文字列をNSMutableStringオブジェクトに追加する必要があります。で、NSMutableStringオブジェクトを初期化し(それdidStartElementを呼び出しましょうelementContentString)、次にこれを行います。

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

そして、あなたの中であなたdidEndElementは文字列としてコンテンツを得ることができます。を使用して、変更不可能なコピーを作成する必要があることに注意してください(次の要素で上書きしないようにします)[NSString stringWithString:self.elementContentString]

于 2012-09-26T09:44:58.473 に答える