6

私は iPhone のフレッシュな開発者です。私は単純な xml 解析デモに取り組んでいます。次のxmlコードの画像を取得するにはどうすればよいですか???

<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>  

どうすれば画像を取得できますか?

次のコードを使用して、既にタイトルまたは説明を取得しています。

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

}

前もって感謝します。

4

3 に答える 3

0

あなたのxmlにはサーバーの画像のURLしかないので、解析中にこのURLを文字列に保存してください。そして、画面に画像を表示する必要があるときに、次を使用してURLから画像を取得します

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

画像を非同期的にロードするには、Git Hub で利用可能なサンプルが多数あります。最近ダウンロードした画像をキャッシュする asyncImage を使用してください。

于 2012-10-17T06:08:30.603 に答える
0

URL から画像を取得するには、このメソッドを使用して画像を返します

UIImage * imageFromURL = [self getImageFromURL:imageurlstring];

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

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

  return result;
}

画像を保存するには、このメソッドを使用します

[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];       
}
于 2012-10-17T06:12:42.540 に答える
0

.h ファイルで imageLink を NSString として宣言できます。

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI  qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
  if([elementName isEqualToString:@"media:thumbnail"]) {
    NSLog(@"attributes1: %@", attributeDict);
    imageLink = [attributeDict objectForKey:@"url"];
  }
}

上記のコードを使用して画像の URL を取得し、次のコードを使用して画像を表示できます。

NSData* imageData = [NSData dataWithContentsOfURL:[NSURL urlWithString:imageLink]];
UIImage* image = [UIImage imageWithData:imageData];
于 2012-10-17T06:22:53.833 に答える