【问题标题】:Web Url contains Spanish Characters which my NSXMLParser is not parsingWeb Url 包含我的 NSXMLParser 未解析的西班牙语字符
【发布时间】:2011-12-28 12:52:40
【问题描述】:

我正在从服务器解析 Web url 并将它们存储在字符串中,然后将其显示在 Webview 上。但是现在当我解析像

这样的西班牙语单词时
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 = @"";
}

我会感谢你的。

【问题讨论】:

    标签: iphone objective-c xcode ios4 nsxmlparser


    【解决方案1】:

    我找到了答案:

    - (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];
    

    【讨论】:

      【解决方案2】:
      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);
      }
      

      【讨论】:

      • 非常感谢罗恩,感谢您的快速回复。
      • 我没有尝试过你的建议,因为我的建议有效,但我给出的答案是正确的,这样至少你会为你的有益努力获得一些分数。谢谢。
      猜你喜欢
      • 2012-10-26
      • 2023-03-18
      • 2013-07-03
      • 1970-01-01
      • 2011-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多