xml解析以从url获取图像数据

时间:2010-12-28 09:31:04

标签: iphone

我正在进行xml解析.....

其解析数据完全成功。我需要显示标题,日期,时间和图片。

它适用于标题,日期,时间,

现在我需要显示图片......

为图片获取一些网址.....

aEventInfo.event_Picture=http://static.djguide.nl/image/flyers/2010/120/91426front.jpg

     NSURL *url3 = [NSURL URLWithString:aEventInfo.event_Picture];
        NSData *data = [NSData dataWithContentsOfURL:url3];
        NSLog(@"%@data",data);
        UIImage *imageView =[[UIImage alloc] initWithData:data];

            CGSize size;
            size.width=400;
            size.height=400;
            UIImage *scaledImage = [imageView scaleToSize:size];
            cell.imageView.image=scaledImage;

我确实喜欢这个崩溃...如果我有图像网址。

如果aEventInfo.event_picture = nil。 它没有崩溃。

如果aEventInfo.event_picture中有任何值.. 例 http://static.djguide.nl/image/flyers/2010/120/91426front.jpg 我的应用程序崩溃了。

我不知道该怎么做..

任何人都可以建议我 并在这种情况下帮助我。

@thanks提前。

4 个答案:

答案 0 :(得分:1)

您应该使用连接方法。例如,connectionDidReceive,ConnectionDidFinish。您应首先使用连接对象创建请求并建立连接。在那之后减去连接方法。

答案 1 :(得分:0)

aEventInfo.event_Picture是一个NSString?你正在初始化它吗?因为检索图像的代码似乎没问题,所以你的问题似乎是你传递的字符串来获取URL。

应该是这样的:

NSString* urlString= @"http://static.djguide.nl/image/flyers/2010/120/91426front.jpg";

然后NSURL *url3 = [NSURL URLWithString:urlString];

答案 2 :(得分:0)

我尊重Open..source

这是我的代码...... //解析课.....

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

    if ([elementName isEqualToString:@"events"]) {
        appDelegate.eventListArray=[[NSMutableArray alloc]init];
}
    if ([elementName isEqualToString:@"event"]) {
//      NSString * stringValue = [attributeDict objectForKey:@"id"];
//      [appDelegate.eventListArray addObject:stringValue];
        aEventInfo=[[EventInfo alloc]init];

        aEventInfo.event_ID=[attributeDict objectForKey:@"id"];
        aEventInfo.event_Title=[attributeDict objectForKey:@"title"];
        aEventInfo.event_Description=[attributeDict objectForKey:@"description"];
        aEventInfo.event_Date=[attributeDict objectForKey:@"date"];
        aEventInfo.event_Time=[attributeDict objectForKey:@"time"];
        aEventInfo.event_Location=[attributeDict objectForKey:@"location"];
        aEventInfo.event_Street=[attributeDict objectForKey:@"street"];
        aEventInfo.event_City=[attributeDict objectForKey:@"city"];
        aEventInfo.event_Visitors=[attributeDict objectForKey:@"visitors"];
        aEventInfo.event_Organisation=[attributeDict objectForKey:@"organisation"];
        aEventInfo.event_Price=[attributeDict objectForKey:@"price"];
        aEventInfo.event_Minimum_Age=[attributeDict objectForKey:@"minimum_age"];
        aEventInfo.event_Picture=[attributeDict objectForKey:@"picture"];
        aEventInfo.event_Genre=[attributeDict objectForKey:@"genre"];
        aEventInfo.event_LineUP=[attributeDict objectForKey:@"lineup"];
        aEventInfo.event_WebSite=[attributeDict objectForKey:@"website"];

    }
}

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName 
  namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
    if ([elementName isEqualToString:@"events"]) {
        NSLog(@"Value of appDelegate is %@",appDelegate.eventListArray);

    }
    if ([elementName isEqualToString:@"event"]) {

        [appDelegate.eventListArray addObject:aEventInfo];
        NSLog(@"appDelegate.eventListArray count %d",[appDelegate.eventListArray count]);
    }
}

//在我的tableview中显示数据.... 来自控制器类。      - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {             //返回部分的数量。         返回1;     }

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
        // Return the number of rows in the section.
//    return [categorieArray count];
    return [appDelegate.eventListArray count];

}

    // Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
        cell.selectionStyle= UITableViewCellSelectionStyleBlue;
        cell.backgroundColor=[UIColor blueColor];
        cell.textLabel.textColor=[UIColor redColor];
        cell.detailTextLabel.textColor=[UIColor blackColor];
        cell.detailTextLabel.font=[UIFont systemFontOfSize:10];
    }
    aEventInfo=[[EventInfo alloc] init];
    aEventInfo=[appDelegate.eventListArray objectAtIndex:indexPath.row];
    cell.textLabel.text=aEventInfo.event_Title;
    cell.detailTextLabel.text=[NSString stringWithFormat:@"City: %@\n Date: %@          Time: %@",[aEventInfo event_City],[aEventInfo event_Date],[aEventInfo event_Time]];



    NSURL *url3 = [NSURL URLWithString:aEventInfo.event_Picture];
    NSData *data = [NSData dataWithContentsOfURL:url3];
    NSLog(@"%@data",data);
    UIImage *imageView =[[UIImage alloc] initWithData:data];

    CGSize size;
    size.width=400;
    size.height=400;
    cell.imageView.image=[UIImage imageNamed:imageView];
    return cell;

}

// EventInfo类

@interface EventInfo : NSObject {
    NSString *event_ID;
    NSString *event_Title;
    NSString *event_Description;
    NSString *event_Date;
    NSString *event_Time;
    NSString *event_Location;
    NSString *event_Street;
    NSString *event_City;
    NSString *event_Visitors;
    NSString *event_Organisation;
    NSString *event_Minimum_Age;
    NSString *event_Price;
    NSString *event_Picture;
    NSString *event_Genre;
    NSString *event_LineUP;
    NSString *event_WebSite;
}
@property (nonatomic,retain)NSString *event_ID;
@property (nonatomic,retain)NSString *event_Title;
@property (nonatomic,retain)NSString *event_Description;
@property (nonatomic,retain)NSString *event_Date;
@property (nonatomic,retain)NSString *event_Time;
@property (nonatomic,retain)NSString *event_Location;
@property (nonatomic,retain)NSString *event_Street;
@property (nonatomic,retain)NSString *event_City;
@property (nonatomic,retain)NSString *event_Visitors;
@property (nonatomic,retain)NSString *event_Organisation;
@property (nonatomic,retain)NSString *event_Minimum_Age;
@property (nonatomic,retain)NSString *event_Price;
@property (nonatomic,retain)NSString *event_Picture;
@property (nonatomic,retain)NSString *event_Genre;
@property (nonatomic,retain)NSString *event_LineUP;
@property (nonatomic,retain)NSString *event_WebSite;

@end

答案 3 :(得分:0)

您是否尝试过使用TouchXML?使用TouchXML,XML解析变得非常容易使用。我使用NSXMLParser遇到了同样的问题。切换到TouchXML,XML解析变得更容易。

选中此link