kiran kumar
kiran kumar

Reputation: 1359

xml parsing to fetch image data from the url

I working on xml parsing.....

its parsed data success fully . i need to display title,date,time and picture.

it worked on title,date,time,

Now i need to display picture...

for picture its getting some url.....

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;

I did like this its crashing... if i got image url.

If aEventInfo.event_picture=nil. Its not crashing.

if any value in aEventInfo.event_picture .. example http://static.djguide.nl/image/flyers/2010/120/91426front.jpg My app get crashed.

I dont know how to do..

can any one advice me and help me out in this case.

@thanks in advance.

Upvotes: 0

Views: 1293

Answers (4)

Swapna
Swapna

Reputation: 2235

Have you tried using TouchXML. XML parsing becomes very easy to use with TouchXML. I was facing the same problem using NSXMLParser. Switched over to TouchXML, and XML parsing became easier.

Check this link

Upvotes: 0

kiran kumar
kiran kumar

Reputation: 1359

I respect Open..source

This is my code.... //Parsing class.....

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

//Displaying Data.... in my tableview. from controller class. - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { // Return the number of sections. return 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 class

@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

Upvotes: 0

JonLOo
JonLOo

Reputation: 4939

aEventInfo.event_Picture is an NSString?? and you are initializing it properly? because the code to retrieve the image seems to be ok, your problem seems to be the string you are passing to get the URL.

It should be something like:

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

and then NSURL *url3 = [NSURL URLWithString:urlString];

Upvotes: 0

Raxit
Raxit

Reputation: 824

You should use the connection methods. for example, connectionDidReceive, ConnectionDidFinish. You should first create request and make a connection using connection Object. And after that writedown connection Methods.

Upvotes: 1

Related Questions