2012-10-17 3 views
6

Ich bin ein Freshher Entwickler in iPhone. ich arbeite an einer einfachen xml parse Demo. Ich möchte nur, wie kann ich das Bild, dass folgende XML-Code ??Wie kann Bild von XML erhalten?

<item> 
     <title>Rain washes out England qualifier</title> 
     <description>England's World Cup qualifier against Poland is postponed because of a waterlogged pitch and is rescheduled for 16:00 BST on Wednesday.</description> 
     <link>http://www.bbc.co.uk/sport/0/football/19941036</link> 
     <guid isPermaLink="false">http://www.bbc.co.uk/sport/0/football/19941036</guid> 
     <pubDate>Tue, 16 Oct 2012 21:18:26 GMT</pubDate> 
     <media:thumbnail width="66" height="49" url="http://news.bbcimg.co.uk/media/images/63530000/jpg/_63530879_016250328-1.jpg"/> 
     <media:thumbnail width="144" height="81" url="http://news.bbcimg.co.uk/media/images/63529000/jpg/_63529179_016250328-1.jpg"/> 
    </item> 

wie kann ich Bilder bekommen?

Ich bekomme bereits Titel oder Beschreibung mit folgendem Code.

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

    if([elementName isEqualToString:className]) 
    { 
     [items addObject:item]; 
     [item release]; 
     item = nil; 
    } 
    else 
    { 
     if([currentNodeContent length] != 0) 
     { 

      if([className isEqualToString:@"item"]) 
      { 


       if([elementName isEqualToString:@"title"]|| [elementName isEqualToString:@"description"] || [elementName isEqualToString:@"url"]) 
       { 
        [item setValue:currentNodeContent forKey:currentNodeName]; 

        if ([elementName isEqualToString:@"media:thumbnail"]) 
        { 
         [item setValue:currentNodeContent forKey:@"url"]; 
        } 

       } 


       else 
       { 

       } 

      } 
     } 
      else 
      { 
      } 

     } 


    [currentNodeContent release]; 
    currentNodeContent = nil; 
    [currentNodeName release]; 
    currentNodeName = nil; 

} 

Vielen Dank im Voraus.

+0

Haben Sie URL erhalten? –

+0

NSData * imageData = [NSData dataWithContentsOfURL: [NSURL urlWithString: imageLink]]; UIImage * image = [UIImage imageWithData: imageData]; setzen obigen Code in NSXMLParser, für URL Element – kamleshwar

+0

Aber dies wird langsamer Geschwindigkeit der Analyse, wenn es lange Liste von Bildern oder Bilder sind groß (das ist nicht zu empfehlen) – kamleshwar

Antwort

0

Ihre XML hat nur eine URL Ihres Bildes auf dem Server, also beim Parsing speichern Sie diese URL in einer Zeichenfolge. Und Sie zu der Zeit benötigen Sie das Bild auf dem Bildschirm zu zeigen, erhalten Sie das Bild aus der URL

NSData* imageData = [NSData dataWithContentsOfURL:[NSURL urlWithString:your_url]]; 
UIImage* image = [UIImage imageWithData:imageData]; 

unter Verwendung der Bilder zu laden asynchron Es gibt viele Proben auf Git Hub, verwenden Sie die asyncImage ein, die die Caches kürzlich heruntergeladene Bilder.

0

Um das Bild aus der URL verwenden diese Methode bekommen sie ein Bild das Bild um diese Methode zu speichern

UIImage * imageFromURL = [self getImageFromURL:imageurlstring]; 

-(UIImage *) getImageFromURL:(NSString *)fileURL { 
    UIImage * result; 

    NSData * data = [NSData dataWithContentsOfURL:[NSURL URLWithString:fileURL]]; 
    result = [UIImage imageWithData:data]; 

    return result; 
} 

kehrt verwenden

[self saveImage:imageFromURL withFileName:[fileComponents objectAtIndex:0] ofType:[fileComponents objectAtIndex:1] inDirectory:documentsDirectoryPath]; 

-(void) saveImage:(UIImage *)image withFileName:(NSString *)imageName ofType:(NSString *)extension inDirectory:(NSString *)directoryPath { 
    imageName = [imageName stringByReplacingOccurrencesOfString:@"%20" withString:@" "]; 
    [UIImagePNGRepresentation(image) writeToFile:[directoryPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.%@", imageName, extension]]options:NSAtomicWrite error:nil];  
} 
0

Sie können Imagelink in .h-Datei als NSString erklären.

Mit dem obigen Code können Sie Bild URL und dann folgenden Code verwenden, um Bild anzuzeigen.

NSData* imageData = [NSData dataWithContentsOfURL:[NSURL urlWithString:imageLink]]; 
UIImage* image = [UIImage imageWithData:imageData]; 
+0

imageLink = [attributeDict objectForKey: @ "url"] ; Was ist imageLink? –

+0

Sie können imageLink in der .h-Datei als NSString deklarieren. d. h. NSString * imageLink; –