Веб-URL содержит символы испанского языка, которые мой NSXMLParser не анализирует - PullRequest
1 голос
/ 14 ноября 2011

Я анализирую веб-URL-адреса с сервера и сохраняю их в строках, а затем отображаю их в веб-представлении.Но теперь, когда я анализирую испанские слова, такие как

http://litofinter.es.milfoil.arvixe.com/litofinter/PDF/Presentación_LITOFINTER_(ES).pdf

, он принимает это

PDF File Name  ++++++ http://litofinter.es.milfoil.arvixe.com/litofinter/PDF/Presentaci
PDF File Name  ++++++ ón_LITOFINTER_(ES).pdf

то есть две разные строки ... я знаю, что я должен сделать небольшое изменение, которое добавляетСтрока, но я не могу сделать это сейчас, кто-нибудь может мне помочь.Вот мой код: -

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
    currentElement = elementName;

    if([currentElement isEqualToString:@"category"]) {

        NSLog(@"Current element in Category:- %@",currentElement);
        obj = [[Litofinter alloc]init];
        obj.productsArray = [[NSMutableArray alloc]init];
    }

    if([currentElement isEqualToString:@"Product"]) {
        obj.oneObj = [[Products alloc]init];
    }

}

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
    if([currentElement isEqualToString:@"Logo"]) {
        obj.cLogo=[NSString stringWithFormat:@"%@",string];
        NSLog(@"Logo to be saved in Array :- %@",obj.cLogo);
    }

    if([currentElement isEqualToString:@"Name"]) {

        obj.cName=[NSString stringWithFormat:@"%@",string];
        NSLog(@"Name to be saved in Array :- %@",string);
    }

    if([currentElement isEqualToString:@"cid"]) {

        obj.cId=(int)[NSString stringWithFormat:@"%@",string];
        NSLog(@"CID to be saved in Array :- %@",string);
    }

    if([currentElement isEqualToString:@"pid"]) {
        //obj.oneObj.id = (int)[NSString stringWithFormat:@"%@",oneBook.id];
        obj.oneObj.id = (int)[oneBook.id intValue];
    }

    if([currentElement isEqualToString:@"Title"]) {
        obj.oneObj.title = [NSString stringWithFormat:@"%@",string];
    }

    if([currentElement isEqualToString:@"Thumbnail"]) {
        obj.oneObj.thumbnail= [NSString stringWithFormat:@"%@",string];
    }

    // problem occuriing while parsing Spanish characters...

    if([currentElement isEqualToString:@"pdf"]) {
        obj.oneObj.pdf = [NSString stringWithFormat:@"%@",string];
        NSLog(@"PDF File Name  ++++++ %@",string);
    }
}

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
    if([elementName isEqualToString:@"category"]) {
        NSLog(@"Current element in End Element Category:- %@",currentElement);

        [TableMutableArray addObject:obj];

    }

    if([elementName isEqualToString:@"Product"]) {

        [obj.productsArray addObject:obj.oneObj];
    }

    currentElement = @"";
}

Я буду вам благодарен.

Ответы [ 2 ]

3 голосов
/ 14 ноября 2011

Я нашел ответ:

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
    currentElement = elementName;


    // MOdified

    else if([currentElement isEqualToString:@"pdf"]) {
    //  obj.oneObj.pdf = [NSString stringWithFormat:@"%@",string];
    //  NSLog(@"PDF File Name  ++++++ %@",string);

        NSMutableString *outputBuilder =  [[NSMutableString alloc]init] ;

        [outputBuilder appendString:[NSString stringWithFormat:@"%@", self.pdfString]];

        [outputBuilder appendString:[NSString stringWithFormat:@"%@", string]];

        self.pdfString = outputBuilder;

        [outputBuilder release];
    }

    else 
    {
        self.pdfString = string;
    }

}

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{

    if([currentElement isEqualToString:@"pdf"])
    {
        obj.oneObj.pdf = self.pdfString;
        NSLog(@"PDF File Name  ++++++ %@",obj.oneObj.pdf);
    }

    currentElement = @"";
}

и небольшое изменение также, где я передаю это, используйте это: -

NSString *urlString = [appDelegate.currentBookPressed stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
1 голос
/ 14 ноября 2011
declare NSString in .h file;

in Did Start parse

str=@"";

if([currentElement isEqualToString:@"pdf"]) {
    str=[str stringByAppendingString:string];
    obj.oneObj.pdf = [NSString stringWithFormat:@"%@",str];
    NSLog(@"PDF File Name  ++++++ %@",str);
}
...