Tuesday, 21 April 2015

XML Parsar ( NSXml Parsar )

XML Parsar ( NSXml Parsar )



Xml Example :

Hi Friends !!!  Here I am Trying My Best To explain how Use  Xml  In IOS. So,I think its may be very helpful to you, Because here I am Trying so simple & easy  language and method so that everyone can understand it very quickly.
Here xml Example using the NSXml parser..

1) First Of Put Table View & Custom cell in  Storyboard :





3) write This Coding in View Controller

    Which is Given Below :


ViewController.h:


#import <UIKit/UIKit.h>

@interface ViewController : UIViewController<NSXMLParserDelegate>
{
     NSMutableData *conWebData;
     NSXMLParser*xmlParser;
     NSMutableDictionary *xmlDicts;
    NSString *currentElement;
    
    NSArray *arrobj;
    NSArray *arrname;
}

@property(strong, nonatomic) IBOutlet UITableView *tblobj;



@end


ViewController.h:


#import "ViewController.h"
#import "myCell.h"

@interface ViewController ()

@end

@implementation ViewController
@synthesize  tblobj;


- (void)viewDidLoad
{
    [super viewDidLoad];
    
    arrobj = [[NSArray alloc] init];
    arrname = [[NSArray alloc] init];

    
// Do any additional setup after loading the view, typically from a nib.
    [self xmlParse];
    
}


- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

-(void)xmlParse
{
    NSString *strRequest = [NSString stringWithFormat:@"http://ec2-54-169-64-237.ap-southeast-1.compute.amazonaws.com/v2/player/player_230558.xml"];
    
    NSURL *sRequestURL = [NSURL URLWithString:strRequest];
    
    NSMutableURLRequest *myRequest = [NSMutableURLRequest requestWithURL:sRequestURL];
    
    
    [myRequest setHTTPMethod:@"Get"];
    
    [myRequest setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
    
    NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:myRequest delegate:self];
    
    if(theConnection)
    {
         conWebData = [NSMutableData data];
    }
}


-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
          [conWebData setLength: 0];
}

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
      [conWebData appendData:data];
}

-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
      NSLog(@"ERROR with theConenction");
      UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Error Connection" message:@"Error With  Conenction" delegate:nil cancelButtonTitle:@"Cancel" otherButtonTitles:@"Ok", nil];
    [alert show];
    
}


-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
 
    
    NSString *theXml = [[NSString alloc] initWithBytes:[conWebData mutableBytes] length:[conWebData length] encoding:NSUTF8StringEncoding];
    NSLog(@"The final result :%@",theXml);
    
    NSLog(@"%@",conWebData);
    
    xmlParser = [[NSXMLParser alloc] initWithData:conWebData];
    [xmlParser setDelegate:self];
    [xmlParser setShouldResolveExternalEntities:YES];
    [xmlParser parse];
    // [SVProgressHUD dismiss];
}


-(void)parser:(NSXMLParser*)parser didStartElement:(NSString*)elementName namespaceURI:(NSString*) namespaceURI qualifiedName:(NSString*)qName attributes:(NSDictionary*)attributeDict
{
    
    if([elementName isEqualToString:@"pro"])
    {
        xmlDicts=[[NSMutableDictionary alloc]init];
    }

          // Here Condition in App Where Data is In Inner Block like      
          //      <yweather:location city="Chanzac" region="" country="France"/>



        //    if([elementName isEqualToString:@"yweather:location"])
       //    {
       //        NSString *strcity = [attributeDict objectForKey:@"city"];
       //        
       //        NSString *strcountry = [attributeDict objectForKey:@"country"];
       //        
      //        NSLog(@"%@",strcity);
      //        NSLog(@"%@",strcountry);
      //    }
         

    
}


-(void)parser:(NSXMLParser*)parser foundCharacters:(NSString*)string
{
   
    currentElement=@"";
    NSLog(@"%@",string);
    currentElement=[NSString stringWithString:string];
}

-(void)parser:(NSXMLParser*)parser didEndElement:(NSString*)elementName namespaceURI:(NSString*)namespaceURI qualifiedName:(NSString*)qName
{
    if([elementName isEqualToString:@"pro"])
    {
        NSLog(@"%@",xmlDicts);
        
        arrobj = [xmlDicts allValues];

        arrname = [xmlDicts allKeys];

        NSLog(@"%@",arrobj);
        
        [tblobj reloadData];

    }
    else if([elementName isEqualToString:@"pId"])
    {
        [xmlDicts setObject:currentElement forKey:@"playerid"];
    }
    else if([elementName isEqualToString:@"nm"])
    {
        [xmlDicts setObject:currentElement forKey:@"playername"];
    }
    else if([elementName isEqualToString:@"dob"])
    {
        [xmlDicts setObject:currentElement forKey:@"dateofbirth"];
    }
    else if([elementName isEqualToString:@"tm"])
    {
        [xmlDicts setObject:currentElement forKey:@"team"];
    }
    else if([elementName isEqualToString:@"pSkl"])
    {
        [xmlDicts setObject:currentElement forKey:@"pSkl"];
    }
    else if([elementName isEqualToString:@"batStl"])
    {
        [xmlDicts setObject:currentElement forKey:@"batStl"];
    }
    else if([elementName isEqualToString:@"bowStl"])
    {
        [xmlDicts setObject:currentElement forKey:@"bowStl"];
    }
    else if([elementName isEqualToString:@"bowStl"])
    {
        [xmlDicts setObject:currentElement forKey:@"bowStl"];
    }
    else if([elementName isEqualToString:@"btStrRt"])
    {
        [xmlDicts setObject:currentElement forKey:@"btStrRt"];
    }
    else if([elementName isEqualToString:@"mtchs"])
    {
        [xmlDicts setObject:currentElement forKey:@"mtchs"];
    }
    else if([elementName isEqualToString:@"fifts"])
    {
        [xmlDicts setObject:currentElement forKey:@"fifts"];
    }
    else if([elementName isEqualToString:@"hunds"])
    {
        [xmlDicts setObject:currentElement forKey:@"hunds"];
    }
    else if([elementName isEqualToString:@"rns"])
    {
        [xmlDicts setObject:currentElement forKey:@"rns"];
    }
    else if([elementName isEqualToString:@"btAvg"])
    {
        [xmlDicts setObject:currentElement forKey:@"btAvg"];
    }
    else if([elementName isEqualToString:@"highScr"])
    {
        [xmlDicts setObject:currentElement forKey:@"highScr"];
    }
    else if([elementName isEqualToString:@"bwAvg"])
    {
        [xmlDicts setObject:currentElement forKey:@"bwAvg"];
    }
    else if([elementName isEqualToString:@"bstBowling"])
    {
        [xmlDicts setObject:currentElement forKey:@"bstBowling"];
    }
    else if([elementName isEqualToString:@"fiveWkHauls"])
    {
        [xmlDicts setObject:currentElement forKey:@"fiveWkHauls"];
    }
    else if([elementName isEqualToString:@"wkts"])
    {
        [xmlDicts setObject:currentElement forKey:@"wkts"];
    }
    else if([elementName isEqualToString:@"fourWkHauls"])
    {
        [xmlDicts setObject:currentElement forKey:@"fourWkHauls"];
    }
    else if([elementName isEqualToString:@"ecoRat"])
    {
        [xmlDicts setObject:currentElement forKey:@"ecoRat"];
    }
    else if([elementName isEqualToString:@"bwStrRt"])
    {
        [xmlDicts setObject:currentElement forKey:@"bwStrRt"];
    }
    else if([elementName isEqualToString:@"sts"])
    {
        [xmlDicts setObject:currentElement forKey:@"sts"];
    }
    else if([elementName isEqualToString:@"cts"])
    {
        [xmlDicts setObject:currentElement forKey:@"cts"];
    }
}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return arrobj.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{
    myCell *cell = [tblobj dequeueReusableCellWithIdentifier:@"cell"];
    
    cell.txtname.text = [arrname objectAtIndex:indexPath.row];
    
    cell.txtvalue.text = [arrobj objectAtIndex:indexPath.row];
    
    return cell;
    
}


@end


Custom Cell (mycell) :

myCell.h :


#import <UIKit/UIKit.h>

@interface myCell : UITableViewCell

@property(strong,nonatomic) IBOutlet UILabel *txtname;
@property(strong,nonatomic) IBOutlet UILabel *txtvalue;

@end


myCell.m :

#import "myCell.h"

@implementation myCell
@synthesize txtname,txtvalue;

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        // Initialization code
    }
    return self;
}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
    [super setSelected:selected animated:animated];

    // Configure the view for the selected state
}

@end

No comments:

Post a Comment